aboutsummaryrefslogtreecommitdiff
path: root/xsde/cxx/serializer/element-validation-source.cxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2010-05-11 12:20:11 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2010-05-11 12:20:11 +0200
commit2e501c68a8641a2b3c430b55f13491a9c1c5d0f5 (patch)
tree49c2748443fe3c1f01108756b647440e0647a11b /xsde/cxx/serializer/element-validation-source.cxx
parent161beba6cdb0d91b15ad19fa8b3e51d986203915 (diff)
Add support for custom allocators
New example: examples/cxx/hybrid/allocator.
Diffstat (limited to 'xsde/cxx/serializer/element-validation-source.cxx')
-rw-r--r--xsde/cxx/serializer/element-validation-source.cxx16
1 files changed, 12 insertions, 4 deletions
diff --git a/xsde/cxx/serializer/element-validation-source.cxx b/xsde/cxx/serializer/element-validation-source.cxx
index b39fed7..ea5fec2 100644
--- a/xsde/cxx/serializer/element-validation-source.cxx
+++ b/xsde/cxx/serializer/element-validation-source.cxx
@@ -736,6 +736,7 @@ namespace CXX
<< "this->_start_element (ns, name);"
<< endl;
else
+ {
os << "bool r;"
<< "if (ns == 0 || *ns == '\\0')" << endl
<< "r = this->_start_element (name);"
@@ -743,13 +744,20 @@ namespace CXX
<< "r = this->_start_element (ns, name);"
<< endl
<< "if (free)"
- << "{"
- << "delete[] ns;"
- << "delete[] name;"
- << "}"
+ << "{";
+
+ if (!custom_alloc)
+ os << "delete[] ns;"
+ << "delete[] name;";
+ else
+ os << "::xsde::cxx::free (ns);"
+ << "::xsde::cxx::free (name);";
+
+ os << "}"
<< "if (!r)" << endl
<< "return;"
<< endl;
+ }
os << "this->" << eserialize (a) << " ();"
<< endl