diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2010-11-22 14:18:40 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2010-11-22 14:18:40 +0200 |
commit | 759c865ebbdf8401e58ef5df705f9d1ad3d83cc9 (patch) | |
tree | 142b8b4f0ef70774632ae6e9254b9514ccbc8d29 /odb/context.hxx | |
parent | 4a50c5a7e9976587569276c768f85ad481694e70 (diff) |
Implement support for one-to-{one,many} inverse relationships
New pragma: inverse.
Diffstat (limited to 'odb/context.hxx')
-rw-r--r-- | odb/context.hxx | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/odb/context.hxx b/odb/context.hxx index 4d6dd10..8878e54 100644 --- a/odb/context.hxx +++ b/odb/context.hxx @@ -75,7 +75,8 @@ public: } static semantics::class_* - object_pointer (semantics::data_member& m, string const& key_prefix) + object_pointer (semantics::data_member& m, + string const& key_prefix = string ()) { using semantics::class_; @@ -84,6 +85,18 @@ public: : m.get<class_*> (key_prefix + "-object-pointer", 0); } + static semantics::data_member* + inverse (semantics::data_member& m, string const& key_prefix = string ()) + { + using semantics::data_member; + + return object_pointer (m, key_prefix) + ? (key_prefix.empty () + ? m.get<data_member*> ("inverse", 0) + : m.get<data_member*> (key_prefix + "-inverse", 0)) + : 0; + } + // Database names and types. // public: @@ -94,6 +107,9 @@ public: // struct table_prefix { + table_prefix () {} + table_prefix (string const& p, size_t l): prefix (p), level (l) {} + string prefix; size_t level; }; |