diff options
Diffstat (limited to 'cli/source.cxx')
-rw-r--r-- | cli/source.cxx | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/cli/source.cxx b/cli/source.cxx index e9e4365..afac17e 100644 --- a/cli/source.cxx +++ b/cli/source.cxx @@ -65,14 +65,21 @@ namespace virtual void traverse (type& o) { - string name (ename (o)); + using semantics::names; + + string member (emember (o)); string type (o.type ().name ()); string scope (escape (o.scope ().name ())); string map ("_cli_" + scope + "_map_"); - os << "_cli_" << scope << "_map_[\"" << o.name () << "\"] = " << endl - << "&::cli::thunk<" << scope << ", " << type << ", " << - "&" << scope << "::" << emember (o) << ">;"; + names& n (o.named ()); + + for (names::name_iterator i (n.name_begin ()); i != n.name_end (); ++i) + { + os << "_cli_" << scope << "_map_[\"" << *i << "\"] = " << endl + << "&::cli::thunk<" << scope << ", " << type << ", " << + "&" << scope << "::" << member << ">;"; + } } }; |