From 8d89bf37dd4ef3cb7373e1841ff57a53916fff0d Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Wed, 21 Mar 2012 08:36:21 +0200 Subject: Polymorphic inheritance support --- odb/traversal/elements.cxx | 20 ++++++++++++++++++++ odb/traversal/elements.hxx | 14 ++++++++++++++ 2 files changed, 34 insertions(+) (limited to 'odb/traversal') 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 + { + virtual void + traverse (type&); + + virtual void + belongs (type&); + + virtual void + belongs (type&, edge_dispatcher&); + }; + + // + // struct unsupported_type: node {}; } -- cgit v1.1