diff options
Diffstat (limited to 'odb/semantics/elements.cxx')
-rw-r--r-- | odb/semantics/elements.cxx | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/odb/semantics/elements.cxx b/odb/semantics/elements.cxx index 85fb203..4b8fcea 100644 --- a/odb/semantics/elements.cxx +++ b/odb/semantics/elements.cxx @@ -322,8 +322,25 @@ namespace semantics void scope:: add_edge_left (names& e) { - names_list::iterator it (names_.insert (names_.end (), &e)); - iterator_map_[&e] = it; + names_list::iterator i (names_.insert (names_.end (), &e)); + iterator_map_[&e] = i; + names_map_[e.name ()].push_back (&e); + } + + void scope:: + add_edge_left (names& e, names_iterator after) + { + names_list::iterator i; + + if (after.base () == names_.end ()) + i = names_.insert (names_.begin (), &e); + else + { + names_list::iterator j (after.base ()); + i = names_.insert (++j, &e); + } + + iterator_map_[&e] = i; names_map_[e.name ()].push_back (&e); } @@ -426,6 +443,14 @@ namespace semantics insert (ti); } + // virtual_data_member + // + { + type_info ti (typeid (virtual_data_member)); + ti.add_base (typeid (data_member)); + insert (ti); + } + // unsupported_type // { |