diff options
Diffstat (limited to 'xsd/cxx/tree/generator.cxx')
-rw-r--r-- | xsd/cxx/tree/generator.cxx | 23 |
1 files changed, 23 insertions, 0 deletions
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 <cxx/tree/counter.hxx> #include <cxx/tree/validator.hxx> #include <cxx/tree/name-processor.hxx> +#include <cxx/tree/polymorphism-processor.hxx> #include <cxx/tree/tree-forward.hxx> #include <cxx/tree/tree-header.hxx> @@ -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 <type>" << endl + << " Indicate that <type> 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<CLI::generate_polymorphic> () && + !ops.value<CLI::polymorphic_type_all> ()) + { + PolymorphismProcessor proc; + if (!proc.process (ops, schema, file_path, disabled_warnings)) + throw Failed (); + } + // Parts. // UnsignedLong parts (ops.value<CLI::parts> ()); |