summaryrefslogtreecommitdiff
path: root/odb/relational/common.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'odb/relational/common.hxx')
-rw-r--r--odb/relational/common.hxx30
1 files changed, 30 insertions, 0 deletions
diff --git a/odb/relational/common.hxx b/odb/relational/common.hxx
index 276868c..26e8197 100644
--- a/odb/relational/common.hxx
+++ b/odb/relational/common.hxx
@@ -6,6 +6,7 @@
#define ODB_RELATIONAL_COMMON_HXX
#include <map>
+#include <set>
#include <cstddef> // std::size_t
#include <cassert>
#include <typeinfo>
@@ -221,6 +222,35 @@ namespace relational
}
};
+ // Generate alias tags and 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) {}
+
+ virtual void
+ traverse_object (semantics::class_&);
+
+ virtual void
+ traverse_pointer (semantics::data_member&, semantics::class_&);
+
+ virtual void
+ generate (string const& alias, semantics::class_&);
+
+ private:
+ void
+ generate_specialization (string const& alias,
+ string const& tag,
+ semantics::class_&);
+
+ std::set<string>& tags_;
+ std::set<string>& specs_;
+ };
+
//
//
struct query_columns_base: object_columns_base, virtual context