aboutsummaryrefslogtreecommitdiff
path: root/xsde/cxx/serializer
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2010-10-18 11:17:51 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2010-10-18 11:17:51 +0200
commitd80d096ee8743fd6f7382d274272b0b6d7faf9bf (patch)
treed0f0bee1e645cb2b86b6837ac0db8a7d2821e533 /xsde/cxx/serializer
parent0e4637025fa8d1b4234b0512561d31f0dd023843 (diff)
Support for schema evolution using substitution groups
New examples: hybrid/evolution/ignore and hybrid/evolution/passthrough.
Diffstat (limited to 'xsde/cxx/serializer')
-rw-r--r--xsde/cxx/serializer/element-validation-source.cxx3
-rw-r--r--xsde/cxx/serializer/serializer-header.cxx6
-rw-r--r--xsde/cxx/serializer/serializer-source.cxx6
3 files changed, 12 insertions, 3 deletions
diff --git a/xsde/cxx/serializer/element-validation-source.cxx b/xsde/cxx/serializer/element-validation-source.cxx
index 3ca784d..bb09275 100644
--- a/xsde/cxx/serializer/element-validation-source.cxx
+++ b/xsde/cxx/serializer/element-validation-source.cxx
@@ -447,7 +447,8 @@ namespace CXX
os << "if (dt != 0 && " <<
"::xsde::cxx::serializer::substitution_map_instance ()" <<
- ".check (ns, n, dt))" << endl
+ ".check (ns, n, dt, " << (ret == L"void" ? "0" : "&r") <<
+ "))" << endl
<< "dt = 0;"
<< endl;
diff --git a/xsde/cxx/serializer/serializer-header.cxx b/xsde/cxx/serializer/serializer-header.cxx
index bf2c724..2d65cf2 100644
--- a/xsde/cxx/serializer/serializer-header.cxx
+++ b/xsde/cxx/serializer/serializer-header.cxx
@@ -1787,6 +1787,11 @@ namespace CXX
<< "using ::xsde::cxx::serializer::serializer_map_impl;"
<< endl;
+ os << "// Serializer substitution map callack." << endl
+ << "//" << endl
+ << "using ::xsde::cxx::serializer::serializer_smap_callback;"
+ << endl;
+
os << "// Substitution and inheritance hashmaps load querying." << endl
<< "//" << endl
<< "using ::xsde::cxx::serializer::serializer_smap_buckets;"
@@ -1938,6 +1943,7 @@ namespace CXX
if (ctx.poly_code)
{
ctx.os << "#include <xsde/cxx/serializer/map.hxx>" << endl
+ << "#include <xsde/cxx/serializer/substitution-map-callback.hxx>" << endl
<< "#include <xsde/cxx/serializer/substitution-map-load.hxx>" << endl;
if (ctx.validation)
diff --git a/xsde/cxx/serializer/serializer-source.cxx b/xsde/cxx/serializer/serializer-source.cxx
index e75a4ed..ab5c123 100644
--- a/xsde/cxx/serializer/serializer-source.cxx
+++ b/xsde/cxx/serializer/serializer-source.cxx
@@ -1108,7 +1108,8 @@ namespace CXX
os << "if (dt != 0 && " <<
"::xsde::cxx::serializer::substitution_map_instance ()" <<
- ".check (ns, n, dt))" << endl
+ ".check (ns, n, dt, " << (ret == L"void" ? "0" : "&r") <<
+ "))" << endl
<< "dt = 0;"
<< endl;
@@ -1190,7 +1191,8 @@ namespace CXX
os << "if (dt != 0 && " <<
"::xsde::cxx::serializer::substitution_map_instance ()" <<
- ".check (ns, n, dt))" << endl
+ ".check (ns, n, dt, " << (ret == L"void" ? "0" : "&r") <<
+ "))" << endl
<< "dt = 0;"
<< endl;