diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2012-03-21 08:36:21 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2012-04-23 16:50:56 +0200 |
commit | 8d89bf37dd4ef3cb7373e1841ff57a53916fff0d (patch) | |
tree | 704b7de0338eba0e008a96a09b6d57e86846d1b1 /odb/traversal | |
parent | 68ff21c56fb287790440208907ad2a851a108f89 (diff) |
Polymorphic inheritance support
Diffstat (limited to 'odb/traversal')
-rw-r--r-- | odb/traversal/elements.cxx | 20 | ||||
-rw-r--r-- | odb/traversal/elements.hxx | 14 |
2 files changed, 34 insertions, 0 deletions
diff --git a/odb/traversal/elements.cxx b/odb/traversal/elements.cxx index 34955d9..7ba207d 100644 --- a/odb/traversal/elements.cxx +++ b/odb/traversal/elements.cxx @@ -75,4 +75,24 @@ namespace traversal { d.dispatch (m.belongs ()); } + + // virtual_data_member + // + void virtual_data_member:: + traverse (type& m) + { + belongs (m); + } + + void virtual_data_member:: + belongs (type& m) + { + belongs (m, *this); + } + + void virtual_data_member:: + belongs (type& m, edge_dispatcher& d) + { + d.dispatch (m.belongs ()); + } } diff --git a/odb/traversal/elements.hxx b/odb/traversal/elements.hxx index ad9f4e9..967858f 100644 --- a/odb/traversal/elements.hxx +++ b/odb/traversal/elements.hxx @@ -233,6 +233,20 @@ namespace traversal // // + struct virtual_data_member: node<semantics::data_member> + { + virtual void + traverse (type&); + + virtual void + belongs (type&); + + virtual void + belongs (type&, edge_dispatcher&); + }; + + // + // struct unsupported_type: node<semantics::unsupported_type> {}; } |