diff options
Diffstat (limited to 'odb/common.hxx')
-rw-r--r-- | odb/common.hxx | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/odb/common.hxx b/odb/common.hxx index 104351a..ef85a4b 100644 --- a/odb/common.hxx +++ b/odb/common.hxx @@ -278,10 +278,7 @@ public: // value type, or an object pointer (with a simple or composite id). // virtual void - traverse (semantics::data_member& m) - { - traverse (m, utype (m), string (), string ()); - } + traverse (semantics::data_member&); virtual void traverse (semantics::data_member& m, column_prefix const& cp) @@ -293,6 +290,17 @@ public: } virtual void + traverse (data_member_path& mp) + { + data_member_path op (member_path_); + member_path_ = mp; + traverse (*mp.back (), column_prefix (mp)); + member_path_ = op; + } + + // Should only be used for containers. + // + virtual void traverse (semantics::data_member&, semantics::type&, string const& key_prefix, @@ -333,7 +341,7 @@ protected: } else return context::column_type ( - member_path_, key_prefix_, (root_ != 0 && (root_id_ || root_op_))); + member_path_, key_prefix_, root_ != 0 && (root_id_ || root_op_)); } bool |