aboutsummaryrefslogtreecommitdiff
path: root/libxsde/xsde/cxx/serializer/substitution-map.ixx
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 /libxsde/xsde/cxx/serializer/substitution-map.ixx
parent0e4637025fa8d1b4234b0512561d31f0dd023843 (diff)
Support for schema evolution using substitution groups
New examples: hybrid/evolution/ignore and hybrid/evolution/passthrough.
Diffstat (limited to 'libxsde/xsde/cxx/serializer/substitution-map.ixx')
-rw-r--r--libxsde/xsde/cxx/serializer/substitution-map.ixx13
1 files changed, 11 insertions, 2 deletions
diff --git a/libxsde/xsde/cxx/serializer/substitution-map.ixx b/libxsde/xsde/cxx/serializer/substitution-map.ixx
index 6622e33..6dbd951 100644
--- a/libxsde/xsde/cxx/serializer/substitution-map.ixx
+++ b/libxsde/xsde/cxx/serializer/substitution-map.ixx
@@ -15,12 +15,21 @@ namespace xsde
{
}
+ inline void substitution_map::
+ callback (callback_func c)
+ {
+ callback_ = c;
+ }
+
inline bool substitution_map::
check (const char*& ns,
const char*& name,
- const char* type) const
+ const char* type,
+ const void* obj) const
{
- return empty () ? false : check_ (ns, name, type);
+ return !empty () || callback_ != 0
+ ? check_ (ns, name, type, obj, true)
+ : false;
}
inline substitution_map&