From 0979184f66b49440758b7fc2b81172af7fe47ad8 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Mon, 5 Sep 2011 10:20:47 +0200 Subject: Support for views; native part --- odb/mysql/statement-cache.hxx | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) (limited to 'odb/mysql/statement-cache.hxx') diff --git a/odb/mysql/statement-cache.hxx b/odb/mysql/statement-cache.hxx index 681bcf2..d5ede48 100644 --- a/odb/mysql/statement-cache.hxx +++ b/odb/mysql/statement-cache.hxx @@ -14,7 +14,9 @@ #include #include +#include #include +#include #include #include @@ -37,7 +39,7 @@ namespace odb template object_statements& - find () + find_object () { map::iterator i (map_.find (&typeid (T))); @@ -51,9 +53,25 @@ namespace odb return *p; } + template + view_statements& + find_view () + { + map::iterator i (map_.find (&typeid (T))); + + if (i != map_.end ()) + return static_cast&> (*i->second); + + details::shared_ptr > p ( + new (details::shared) view_statements (conn_)); + + map_.insert (map::value_type (&typeid (T), p)); + return *p; + } + private: typedef std::map, + details::shared_ptr, details::type_info_comparator> map; connection& conn_; -- cgit v1.1