From 3bf42ed8ccc93a3ff5fdabb9153b887018075acc Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Tue, 19 Jan 2010 11:44:48 +0200 Subject: Add support for selective polymorphic in C++/Tree New options: --polymorphic-type, --polymorphic-type-all. --- xsd/cxx/tree/generator.cxx | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'xsd/cxx/tree/generator.cxx') diff --git a/xsd/cxx/tree/generator.cxx b/xsd/cxx/tree/generator.cxx index 012a1fd..a70214c 100644 --- a/xsd/cxx/tree/generator.cxx +++ b/xsd/cxx/tree/generator.cxx @@ -10,6 +10,7 @@ #include #include #include +#include #include #include @@ -119,6 +120,8 @@ namespace CXX extern Key char_encoding = "char-encoding"; extern Key output_dir = "output-dir"; extern Key generate_polymorphic = "generate-polymorphic"; + extern Key polymorphic_type = "polymorphic-type"; + extern Key polymorphic_type_all = "polymorphic-type-all"; extern Key generate_serialization = "generate-serialization"; extern Key generate_inline = "generate-inline"; extern Key generate_ostream = "generate-ostream"; @@ -239,6 +242,16 @@ namespace CXX << " option if you use substitution groups or xsi:type." << endl; + e << "--polymorphic-type " << endl + << " Indicate that is a root of a polymorphic\n" + << " type hierarchy." + << endl; + + e << "--polymorphic-type-all" << endl + << " Indicate that all types should be treated as\n" + << " polymorphic." + << endl; + e << "--generate-serialization" << endl << " Generate serialization functions. They convert an\n" << " in-memory representation back to XML." @@ -878,6 +891,16 @@ namespace CXX throw Failed (); } + // Process polymorphic types. + // + if (ops.value () && + !ops.value ()) + { + PolymorphismProcessor proc; + if (!proc.process (ops, schema, file_path, disabled_warnings)) + throw Failed (); + } + // Parts. // UnsignedLong parts (ops.value ()); -- cgit v1.1