summaryrefslogtreecommitdiff
path: root/odb/semantics/elements.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'odb/semantics/elements.cxx')
-rw-r--r--odb/semantics/elements.cxx29
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
//
{