diff options
author | Jörg Frings-Fürst <debian@jff-webhosting.net> | 2014-07-23 15:21:29 +0200 |
---|---|---|
committer | Jörg Frings-Fürst <debian@jff-webhosting.net> | 2014-07-23 15:21:29 +0200 |
commit | bada6666c70977a058755ccf232e7d67b24adeed (patch) | |
tree | 1e92d50cebce96abaf9bce19e36026c47f77b9ba /xsd/xsd/cxx/tree/parser-source.cxx | |
parent | eaf34adcbd8095bc6d1f3371b1227f654c7b19fc (diff) |
New upstream release
Diffstat (limited to 'xsd/xsd/cxx/tree/parser-source.cxx')
-rw-r--r-- | xsd/xsd/cxx/tree/parser-source.cxx | 151 |
1 files changed, 62 insertions, 89 deletions
diff --git a/xsd/xsd/cxx/tree/parser-source.cxx b/xsd/xsd/cxx/tree/parser-source.cxx index 7291cb8..c93368c 100644 --- a/xsd/xsd/cxx/tree/parser-source.cxx +++ b/xsd/xsd/cxx/tree/parser-source.cxx @@ -1,6 +1,5 @@ // file : xsd/cxx/tree/parser-source.cxx -// author : Boris Kolpackov <boris@codesynthesis.com> -// copyright : Copyright (c) 2005-2010 Code Synthesis Tools CC +// copyright : Copyright (c) 2005-2014 Code Synthesis Tools CC // license : GNU GPL v2 + exceptions; see accompanying LICENSE file #include <cxx/tree/parser-source.hxx> @@ -23,7 +22,7 @@ namespace CXX { } - virtual Void + virtual void traverse (Type& e) { if (!doc_root_p (e)) @@ -38,9 +37,11 @@ namespace CXX // confused if the name is 'type'. (see tests/schema/anonymous) // + char const* d (std >= cxx_version::cxx11 ? "std::move (d)" : "d"); + // URI. // - os << "::std::auto_ptr< " << type << " >" << endl + os << auto_ptr << "< " << type << " >" << endl << name << " (const " << string_type << "& u," << endl << flags_type << " f," << endl << "const " << properties_type << "& p)" @@ -56,22 +57,20 @@ namespace CXX << "::xsd::cxx::xml::dom::parse< " << char_type << " > (" << endl << "u, h, p, f"; - if (options.value<CLI::disable_multi_import> ()) + if (options.disable_multi_import ()) os << " | ::xsd::cxx::xml::dom::no_muliple_imports"; - os << "));" + os << "));" << endl << "h.throw_if_failed< ::xsd::cxx::tree::parsing< " << char_type << " > > ();" << endl - << "::std::auto_ptr< " << type << " > r (" << endl + << "return " << auto_ptr << "< " << type << " > (" << endl << fq_name (e, "parser") << " (" << endl - << "d, f | " << flags_type << "::own_dom, p));" - << endl - << "return r;" + << d << ", f | " << flags_type << "::own_dom, p));" << "}"; - os << "::std::auto_ptr< " << type << " >" << endl + os << auto_ptr << "< " << type << " >" << endl << name << " (const " << string_type << "& u," << endl << error_handler << "& h," << endl << flags_type << " f," << endl @@ -86,7 +85,7 @@ namespace CXX << "::xsd::cxx::xml::dom::parse< " << char_type << " > (" << endl << "u, h, p, f"; - if (options.value<CLI::disable_multi_import> ()) + if (options.disable_multi_import ()) os << " | ::xsd::cxx::xml::dom::no_muliple_imports"; os << "));" @@ -94,14 +93,12 @@ namespace CXX << "if (!d.get ())" << endl << "throw ::xsd::cxx::tree::parsing< " << char_type << " > ();" << endl - << "::std::auto_ptr< " << type << " > r (" << endl + << "return " << auto_ptr << "< " << type << " > (" << endl << fq_name (e, "parser") << " (" << endl - << "d, f | " << flags_type << "::own_dom, p));" - << endl - << "return r;" + << d << ", f | " << flags_type << "::own_dom, p));" << "}"; - os << "::std::auto_ptr< " << type << " >" << endl + os << auto_ptr << "< " << type << " >" << endl << name << " (const " << string_type << "& u," << endl << xerces_ns << "::DOMErrorHandler& h," << endl << flags_type << " f," << endl @@ -112,7 +109,7 @@ namespace CXX << "::xsd::cxx::xml::dom::parse< " << char_type << " > (" << endl << "u, h, p, f"; - if (options.value<CLI::disable_multi_import> ()) + if (options.disable_multi_import ()) os << " | ::xsd::cxx::xml::dom::no_muliple_imports"; os << "));" @@ -120,17 +117,15 @@ namespace CXX << "if (!d.get ())" << endl << "throw ::xsd::cxx::tree::parsing< " << char_type << " > ();" << endl - << "::std::auto_ptr< " << type << " > r (" << endl + << "return " << auto_ptr << "< " << type << " > (" << endl << fq_name (e, "parser") << " (" << endl - << "d, f | " << flags_type << "::own_dom, p));" - << endl - << "return r;" + << d << ", f | " << flags_type << "::own_dom, p));" << "}"; // istream // - os << "::std::auto_ptr< " << type << " >" << endl + os << auto_ptr << "< " << type << " >" << endl << name << " (::std::istream& is," << endl << flags_type << " f," << endl << "const " << properties_type << "& p)" @@ -143,7 +138,7 @@ namespace CXX << "return " << fq_name (e, "parser") << " (isrc, f, p);" << "}"; - os << "::std::auto_ptr< " << type << " >" << endl + os << auto_ptr << "< " << type << " >" << endl << name << " (::std::istream& is," << endl << error_handler << "& h," << endl << flags_type << " f," << endl @@ -157,7 +152,7 @@ namespace CXX << "return " << fq_name (e, "parser") << " (isrc, h, f, p);" << "}"; - os << "::std::auto_ptr< " << type << " >" << endl + os << auto_ptr << "< " << type << " >" << endl << name << " (::std::istream& is," << endl << xerces_ns << "::DOMErrorHandler& h," << endl << flags_type << " f," << endl @@ -167,7 +162,7 @@ namespace CXX << "return " << fq_name (e, "parser") << " (isrc, h, f, p);" << "}"; - os << "::std::auto_ptr< " << type << " >" << endl + os << auto_ptr << "< " << type << " >" << endl << name << " (::std::istream& is," << endl << "const " << string_type << "& sid," << endl << flags_type << " f," << endl @@ -181,7 +176,7 @@ namespace CXX << "return " << fq_name (e, "parser") << " (isrc, f, p);" << "}"; - os << "::std::auto_ptr< " << type << " >" << endl + os << auto_ptr << "< " << type << " >" << endl << name << " (::std::istream& is," << endl << "const " << string_type << "& sid," << endl << error_handler << "& h," << endl @@ -196,7 +191,7 @@ namespace CXX << "return " << fq_name (e, "parser") << " (isrc, h, f, p);" << "}"; - os << "::std::auto_ptr< " << type << " >" << endl + os << auto_ptr << "< " << type << " >" << endl << name << " (::std::istream& is," << endl << "const " << string_type << "& sid," << endl << xerces_ns << "::DOMErrorHandler& h," << endl @@ -210,7 +205,7 @@ namespace CXX // InputSource. // - os << "::std::auto_ptr< " << type << " >" << endl + os << auto_ptr << "< " << type << " >" << endl << name << " (" << xerces_ns << "::InputSource& i," << endl << flags_type << " f," << endl << "const " << properties_type << "& p)" @@ -222,7 +217,7 @@ namespace CXX << "::xsd::cxx::xml::dom::parse< " << char_type << " > (" << endl << "i, h, p, f"; - if (options.value<CLI::disable_multi_import> ()) + if (options.disable_multi_import ()) os << " | ::xsd::cxx::xml::dom::no_muliple_imports"; os << "));" @@ -230,14 +225,12 @@ namespace CXX << "h.throw_if_failed< ::xsd::cxx::tree::parsing< " << char_type << " > > ();" << endl - << "::std::auto_ptr< " << type << " > r (" << endl + << "return " << auto_ptr << "< " << type << " > (" << endl << fq_name (e, "parser") << " (" << endl - << "d, f | " << flags_type << "::own_dom, p));" - << endl - << "return r;" + << d << ", f | " << flags_type << "::own_dom, p));" << "}"; - os << "::std::auto_ptr< " << type << " >" << endl + os << auto_ptr << "< " << type << " >" << endl << name << " (" << xerces_ns << "::InputSource& i," << endl << error_handler << "& h," << endl << flags_type << " f," << endl @@ -248,7 +241,7 @@ namespace CXX << "::xsd::cxx::xml::dom::parse< " << char_type << " > (" << endl << "i, h, p, f"; - if (options.value<CLI::disable_multi_import> ()) + if (options.disable_multi_import ()) os << " | ::xsd::cxx::xml::dom::no_muliple_imports"; os << "));" @@ -256,15 +249,13 @@ namespace CXX << "if (!d.get ())" << endl << "throw ::xsd::cxx::tree::parsing< " << char_type << " > ();" << endl - << "::std::auto_ptr< " << type << " > r (" << endl + << "return " << auto_ptr << "< " << type << " > (" << endl << fq_name (e, "parser") << " (" << endl - << "d, f | " << flags_type << "::own_dom, p));" - << endl - << "return r;" + << d << ", f | " << flags_type << "::own_dom, p));" << "}"; - os << "::std::auto_ptr< " << type << " >" << endl + os << auto_ptr << "< " << type << " >" << endl << name << " (" << xerces_ns << "::InputSource& i," << endl << xerces_ns << "::DOMErrorHandler& h," << endl << flags_type << " f," << endl @@ -275,7 +266,7 @@ namespace CXX << "::xsd::cxx::xml::dom::parse< " << char_type << " > (" << endl << "i, h, p, f"; - if (options.value<CLI::disable_multi_import> ()) + if (options.disable_multi_import ()) os << " | ::xsd::cxx::xml::dom::no_muliple_imports"; os << "));" @@ -283,18 +274,16 @@ namespace CXX << "if (!d.get ())" << endl << "throw ::xsd::cxx::tree::parsing< " << char_type << " > ();" << endl - << "::std::auto_ptr< " << type << " > r (" << endl + << "return " << auto_ptr << "< " << type << " > (" << endl << fq_name (e, "parser") << " (" << endl - << "d, f | " << flags_type << "::own_dom, p));" - << endl - << "return r;" + << d << ", f | " << flags_type << "::own_dom, p));" << "}"; // DOM. // - Boolean fund (false); + bool fund (false); { IsFundamentalType test (fund); test.dispatch (t); @@ -304,44 +293,36 @@ namespace CXX // If this element's type is anonymous then we don't need to do // anything. // - Boolean poly (polymorphic && polymorphic_p (t) && !anonymous_p (t)); + bool poly (polymorphic && polymorphic_p (t) && !anonymous_p (t)); // const DOMDocument& // - os << "::std::auto_ptr< " << type << " >" << endl - << name << " (const " << xerces_ns << "::DOMDocument& d," << endl + 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 > c (" << endl + "::DOMDocument > d (" << endl << "static_cast< " << xerces_ns << - "::DOMDocument* > (d.cloneNode (true)));" + "::DOMDocument* > (doc.cloneNode (true)));" << endl - << "::std::auto_ptr< " << type << " > r (" << endl + << "return " << auto_ptr << "< " << type << " > (" << endl << fq_name (e, "parser") << " (" << endl - << "c, f | " << flags_type << "::own_dom, p));" - << endl - << "return r;" + << d << ", f | " << flags_type << "::own_dom, p));" << "}" - << "const " << xerces_ns << "::DOMElement& e (*d.getDocumentElement ());" + << "const " << xerces_ns << "::DOMElement& e (*doc.getDocumentElement ());" << "const " << qname_type << " n (" << endl << "::xsd::cxx::xml::dom::name< " << char_type << " > (e));" << endl; if (poly) { - // aCC cannot handle an inline call to type_factory_map_instance. - // - os << "::xsd::cxx::tree::type_factory_map< " << char_type << - " >& tfm (" << endl - << "::xsd::cxx::tree::type_factory_map_instance< 0, " << - char_type << " > ());" - << endl - << "::std::auto_ptr< ::xsd::cxx::tree::type > tmp (" << endl - << "tfm.create (" << endl + 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 @@ -349,7 +330,7 @@ namespace CXX << endl << "if (tmp.get () != 0)" << "{" - << "::std::auto_ptr< " << type << " > r (" << endl + << auto_ptr << "< " << type << " > r (" << endl << "dynamic_cast< " << type << "* > (tmp.get ()));" << endl << "if (r.get ())" << endl @@ -367,7 +348,7 @@ namespace CXX if (fund) { - os << "::std::auto_ptr< " << type << " > r (" << endl + os << auto_ptr << "< " << type << " > r (" << endl << "new " << type << " (" << endl << "::xsd::cxx::tree::traits< " << type << ", " << char_type; @@ -382,7 +363,7 @@ namespace CXX } else { - os << "::std::auto_ptr< " << type << " > r (" << endl + os << auto_ptr << "< " << type << " > r (" << endl << "::xsd::cxx::tree::traits< " << type << ", " << char_type << " >::create (" << endl << "e, f, 0));"; @@ -400,11 +381,11 @@ namespace CXX << "}"; - // dom::auto_ptr<DOMDocument> + // dom::auto_ptr/unique_ptr<DOMDocument> // - os << "::std::auto_ptr< " << type << " >" << endl + os << auto_ptr << "< " << type << " >" << endl << name << " (" << dom_auto_ptr << "< " << xerces_ns << - "::DOMDocument >& d," << endl + "::DOMDocument > d," << endl << flags_type << " f," << endl << "const " << properties_type << "&)" << "{" @@ -431,15 +412,9 @@ namespace CXX if (poly) { - // aCC cannot handle an inline call to type_factory_map_instance. - // - os << "::xsd::cxx::tree::type_factory_map< " << char_type << - " >& tfm (" << endl - << "::xsd::cxx::tree::type_factory_map_instance< 0, " << - char_type << " > ());" - << endl - << "::std::auto_ptr< ::xsd::cxx::tree::type > tmp (" << endl - << "tfm.create (" << endl + 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 @@ -456,7 +431,7 @@ namespace CXX if (fund) { - os << "::std::auto_ptr< " << type << " > r (" << endl + os << auto_ptr << "< " << type << " > r (" << endl << "new " << type << " (" << endl << "::xsd::cxx::tree::traits< " << type << ", " << char_type; @@ -471,7 +446,7 @@ namespace CXX } else { - os << "::std::auto_ptr< " << type << " > r (" << endl + os << auto_ptr << "< " << type << " > r (" << endl << "::xsd::cxx::tree::traits< " << type << ", " << char_type << " >::create (" << endl << "e, f, 0));"; @@ -481,7 +456,7 @@ namespace CXX if (poly) { os << endl - << "::std::auto_ptr< " << type << " > r (" << endl + << auto_ptr << "< " << type << " > r (" << endl << "dynamic_cast< " << type << "* > (tmp.get ()));" << endl << "if (r.get ())" << endl @@ -517,10 +492,8 @@ namespace CXX }; } - Void - generate_parser_source (Context& ctx, - UnsignedLong first, - UnsignedLong last) + 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 @@ -528,7 +501,7 @@ namespace CXX << endl; Traversal::Schema schema; - Traversal::Sources sources; + Sources sources; Traversal::Names names_ns, names; Namespace ns (ctx, first, last); ElementFunction element (ctx); |