diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2012-11-02 12:18:43 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2012-11-21 13:13:50 +0200 |
commit | 1f777ed4b8cc816817e1ce6cb8d9af970ad9b423 (patch) | |
tree | fc6be8482dfa11fa26b387ca4763d9b282b27638 /odb/relational/common.hxx | |
parent | 8a637f5697fdee3e7ae2d46f64a64d40cba5954b (diff) |
Rework query alias tag system
Now each object pointer or view-associated object with alias gets its
own unique tag.
Diffstat (limited to 'odb/relational/common.hxx')
-rw-r--r-- | odb/relational/common.hxx | 27 |
1 files changed, 13 insertions, 14 deletions
diff --git a/odb/relational/common.hxx b/odb/relational/common.hxx index b951d15..1e7143f 100644 --- a/odb/relational/common.hxx +++ b/odb/relational/common.hxx @@ -222,33 +222,32 @@ namespace relational } }; - // Generate alias tags and alias_traits specializations for pointers - // in this objects. + // Generate alias_traits specializations for pointers in this objects. // struct query_alias_traits: object_columns_base, virtual context { typedef query_alias_traits base; - query_alias_traits (std::set<string>& tags, std::set<string>& specs) - : tags_ (tags), specs_ (specs) {} + query_alias_traits (semantics::class_&, bool decl); virtual void traverse_object (semantics::class_&); virtual void + traverse_composite (semantics::data_member*, semantics::class_&); + + virtual void traverse_pointer (semantics::data_member&, semantics::class_&); virtual void - generate (string const& alias, semantics::class_&); + generate_decl (string const& tag, semantics::class_&); - private: - void - generate_specialization (string const& alias, - string const& tag, - semantics::class_&); + virtual void + generate_def (string const& tag, semantics::class_&, string const& alias); - std::set<string>& tags_; - std::set<string>& specs_; + protected: + bool decl_; + string scope_; }; // @@ -257,8 +256,7 @@ namespace relational { typedef query_columns_base base; - query_columns_base (); - query_columns_base (semantics::class_&); + query_columns_base (semantics::class_&, bool decl); virtual void traverse_object (semantics::class_&); @@ -272,6 +270,7 @@ namespace relational protected: bool decl_; string scope_; + string tag_scope_; }; // |