diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2011-09-14 14:35:19 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2011-09-14 14:35:19 +0200 |
commit | a32d89c25b80f443d93a050a979e465f4d1dc39e (patch) | |
tree | 9e168504996951118230d24056811c4c48bd938d /xsde/cxx/hybrid/parser-aggregate-header.cxx | |
parent | 62cadf03af778b508bd684be19c6e6958b2fe52f (diff) |
Fix bug in aggregate generation for derived lists
Diffstat (limited to 'xsde/cxx/hybrid/parser-aggregate-header.cxx')
-rw-r--r-- | xsde/cxx/hybrid/parser-aggregate-header.cxx | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/xsde/cxx/hybrid/parser-aggregate-header.cxx b/xsde/cxx/hybrid/parser-aggregate-header.cxx index 986db36..967f1db 100644 --- a/xsde/cxx/hybrid/parser-aggregate-header.cxx +++ b/xsde/cxx/hybrid/parser-aggregate-header.cxx @@ -23,10 +23,12 @@ namespace CXX // For base types we only want member's types, but not the // base itself. // - struct BaseType: Traversal::Complex, Context + struct BaseType: Traversal::Complex, + Traversal::List, + Context { - BaseType (Context& c) - : Context (c) + BaseType (Context& c, Traversal::NodeBase& def) + : Context (c), def_ (def) { } @@ -41,6 +43,15 @@ namespace CXX contains_compositor (c); } } + + virtual Void + traverse (SemanticGraph::List& l) + { + def_.dispatch (l.argumented ().type ()); + } + + private: + Traversal::NodeBase& def_; }; struct ParserDef: Traversal::Type, @@ -113,7 +124,7 @@ namespace CXX map_ (map), tid_map_ (tid_map), set_ (set), - base_ (c) + base_ (c, *this) { *this >> inherits_ >> base_ >> inherits_; |