diff options
Diffstat (limited to 'xsde/cxx/hybrid/extraction-source.cxx')
-rw-r--r-- | xsde/cxx/hybrid/extraction-source.cxx | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/xsde/cxx/hybrid/extraction-source.cxx b/xsde/cxx/hybrid/extraction-source.cxx index 44af7e0..5945ce3 100644 --- a/xsde/cxx/hybrid/extraction-source.cxx +++ b/xsde/cxx/hybrid/extraction-source.cxx @@ -24,7 +24,13 @@ namespace CXX virtual Void traverse (Type& l) { - String name (ename (l)); + String const& name (ename_custom (l)); + + // We may not need to generate the class if this type is + // being customized. + // + if (!name) + return; for (Streams::ConstIterator i (istreams.begin ()); i != istreams.end (); ++i) @@ -56,7 +62,14 @@ namespace CXX virtual Void traverse (Type& u) { - String name (ename (u)); + String const& name (ename_custom (u)); + + // We may not need to generate the class if this type is + // being customized. + // + if (!name) + return; + String const& value (u.context ().get<String> ("value")); for (Streams::ConstIterator i (istreams.begin ()); @@ -930,9 +943,15 @@ namespace CXX virtual Void traverse (Type& c) { - Boolean restriction (restriction_p (c)); + String const& name (ename_custom (c)); + + // We may not need to generate the class if this type is + // being customized. + // + if (!name) + return; - String name (ename (c)); + Boolean restriction (restriction_p (c)); for (Streams::ConstIterator i (istreams.begin ()); i != istreams.end (); ++i) |