diff options
Diffstat (limited to 'xsd/cxx/tree')
-rw-r--r-- | xsd/cxx/tree/name-processor.cxx | 15 | ||||
-rw-r--r-- | xsd/cxx/tree/tree-header.cxx | 4 | ||||
-rw-r--r-- | xsd/cxx/tree/tree-source.cxx | 4 |
3 files changed, 14 insertions, 9 deletions
diff --git a/xsd/cxx/tree/name-processor.cxx b/xsd/cxx/tree/name-processor.cxx index a9427a6..a563849 100644 --- a/xsd/cxx/tree/name-processor.cxx +++ b/xsd/cxx/tree/name-processor.cxx @@ -1067,6 +1067,12 @@ namespace CXX { SemanticGraph::Context& cc (c.context ()); + // We leave this set around to allow other mappings to use + // this information. + // + cc.set ("cxx-tree-name-processor-stem-set", NameSet ()); + cc.set ("cxx-tree-name-processor-member-set", NameSet ()); + // Use processed name. // String name (cc.get<String> ("name")); @@ -1078,12 +1084,6 @@ namespace CXX if (renamed_type (c, name) && !name) return; - // We leave this set around to allow other mappings to use - // this information. - // - cc.set ("cxx-tree-name-processor-stem-set", NameSet ()); - cc.set ("cxx-tree-name-processor-member-set", NameSet ()); - NameSet& stem_set ( cc.get<NameSet> ("cxx-tree-name-processor-stem-set")); @@ -1102,7 +1102,8 @@ namespace CXX // SemanticGraph::Type& base (c.inherits ().base ()); - if (base.is_a<SemanticGraph::Complex> ()) + if (base.is_a<SemanticGraph::Complex> () && + !base.is_a<SemanticGraph::Enumeration> ()) { if (!base.context ().count ( "cxx-tree-name-processor-member-set")) diff --git a/xsd/cxx/tree/tree-header.cxx b/xsd/cxx/tree/tree-header.cxx index 835a40f..65fdd65 100644 --- a/xsd/cxx/tree/tree-header.cxx +++ b/xsd/cxx/tree/tree-header.cxx @@ -2665,7 +2665,9 @@ namespace CXX if (string_based) { - if (enum_base != 0) + // We might not have the value type if this enum is customized. + // + if (enum_base != 0 && enum_base->context ().count ("value")) { // c-tor (enum-value, all-non-optional-members) // diff --git a/xsd/cxx/tree/tree-source.cxx b/xsd/cxx/tree/tree-source.cxx index 1fd31b2..fda9e63 100644 --- a/xsd/cxx/tree/tree-source.cxx +++ b/xsd/cxx/tree/tree-source.cxx @@ -2491,7 +2491,9 @@ namespace CXX if (string_based) { - if (enum_base != 0) + // We might not have the value type if this enum is customized. + // + if (enum_base != 0 && enum_base->context ().count ("value")) { // c-tor (enum-value, all-non-optional-members) // |