aboutsummaryrefslogtreecommitdiff
path: root/xsde/cxx/hybrid/parser-aggregate-header.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'xsde/cxx/hybrid/parser-aggregate-header.cxx')
-rw-r--r--xsde/cxx/hybrid/parser-aggregate-header.cxx13
1 files changed, 11 insertions, 2 deletions
diff --git a/xsde/cxx/hybrid/parser-aggregate-header.cxx b/xsde/cxx/hybrid/parser-aggregate-header.cxx
index a769e6d..de76640 100644
--- a/xsde/cxx/hybrid/parser-aggregate-header.cxx
+++ b/xsde/cxx/hybrid/parser-aggregate-header.cxx
@@ -219,7 +219,11 @@ namespace CXX
virtual Void
traverse (SemanticGraph::AnyType& t)
{
- fund_type (t, "any_type");
+ if (fund_type (t, "any_type"))
+ {
+ if (polymorphic (t))
+ collect (t);
+ }
}
virtual Void
@@ -510,11 +514,16 @@ namespace CXX
}
private:
- virtual Void
+ virtual Boolean
fund_type (SemanticGraph::Type& t, String const& name)
{
if (map_.find (&t) == map_.end ())
+ {
map_[&t] = find_instance_name (name);
+ return true;
+ }
+
+ return false;
}
String