From f60df03e3cedb86508645357e17003eb9281f31a Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Fri, 22 Jan 2010 15:40:12 +0200 Subject: Add support for detaching subtrees in C++/Tree New option: --generate-detach. New test: cxx/tree/detach. --- xsd/cxx/tree/tree-header.cxx | 52 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 50 insertions(+), 2 deletions(-) (limited to 'xsd/cxx/tree/tree-header.cxx') diff --git a/xsd/cxx/tree/tree-header.cxx b/xsd/cxx/tree/tree-header.cxx index 7e884c8..100a81c 100644 --- a/xsd/cxx/tree/tree-header.cxx +++ b/xsd/cxx/tree/tree-header.cxx @@ -1332,14 +1332,39 @@ namespace CXX << " * @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 + "directly" << endl + << " * instead of making a copy." << endl << " */" << endl; } os << "void" << endl << mname << " (::std::auto_ptr< " << type << " > p);" << endl; + + } + + // auto_ptr + // 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 << "::std::auto_ptr< " << type << " >" << endl + << edname (m) << " ();" + << endl; } } } @@ -3247,6 +3272,29 @@ namespace CXX << endl; } + // auto_ptr + // 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 << "::std::auto_ptr< " << type << " >" << endl + << edname (e) << " ();" + << endl; + } + if (doxygen) { os << "/**" << endl -- cgit v1.1