From ea95e3637288a1369ac96011d0cec9feeead05f2 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Thu, 15 Apr 2010 13:55:04 +0200 Subject: Turn on union to enum synthesis for C++/Tree --- NEWS | 4 ++++ xsd/xsd.cxx | 17 +++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/NEWS b/NEWS index 5d4fec2..83de53c 100644 --- a/NEWS +++ b/NEWS @@ -110,6 +110,10 @@ Version 3.3.0 * Empty XML Schema enumeration values are now mapped to the 'empty' C++ enumerator name instead of 'cxx'. + * XML Schema union types with members that are enumeration types are + automatically converted to equivalent enumeration types with a union + of all the member's enumerators. + Version 3.2.0 * New option, --disable-warning, disables printing of a warning with diff --git a/xsd/xsd.cxx b/xsd/xsd.cxx index a0b26a7..1c66a8a 100644 --- a/xsd/xsd.cxx +++ b/xsd/xsd.cxx @@ -18,6 +18,7 @@ #include #include +#include #include #include #include @@ -718,6 +719,14 @@ main (Int argc, Char* argv[]) } } + // Synthesize enumerations from unions. + // + if (cmd == "cxx-tree") + { + Transformations::EnumSynthesis trans; + trans.transform (*schema, tu); + } + // Simplify the schema graph. // if (cmd == "cxx-parser") @@ -862,6 +871,14 @@ main (Int argc, Char* argv[]) } } + // Synthesize enumerations from unions. + // + if (cmd == "cxx-tree") + { + Transformations::EnumSynthesis trans; + trans.transform (*schema, ""); + } + // Simplify the schema graph. // if (cmd == "cxx-parser") -- cgit v1.1