aboutsummaryrefslogtreecommitdiff
path: root/odb/connection.hxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2015-11-09 18:14:37 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2015-11-09 18:14:37 +0200
commit644cba591ff6ec046ac4274b7c343dead847736e (patch)
tree70574b1ca044af28bccb01be7b4126aff3a63b42 /odb/connection.hxx
parentf18ea631bbe47a116a6b8ad6da5ab10a5be8158f (diff)
Make database class move-constructible
This means it can be returned by value from a function in C++11.
Diffstat (limited to 'odb/connection.hxx')
-rw-r--r--odb/connection.hxx19
1 files changed, 17 insertions, 2 deletions
diff --git a/odb/connection.hxx b/odb/connection.hxx
index 20cb285..f1f8c3b 100644
--- a/odb/connection.hxx
+++ b/odb/connection.hxx
@@ -26,6 +26,7 @@
namespace odb
{
class transaction_impl;
+ class connection_factory;
class connection;
typedef details::shared_ptr<connection> connection_ptr;
@@ -130,7 +131,7 @@ namespace odb
recycle ();
protected:
- connection (database_type&);
+ connection (connection_factory&);
template <typename T,
database_id DB,
@@ -180,7 +181,7 @@ namespace odb
clear_prepared_map ();
protected:
- database_type& database_;
+ connection_factory& factory_;
tracer_type* tracer_;
// Active query result list.
@@ -203,6 +204,20 @@ namespace odb
friend class transaction;
tracer_type* transaction_tracer_;
};
+
+ class LIBODB_EXPORT connection_factory
+ {
+ public:
+ typedef odb::database database_type;
+
+ connection_factory (): db_ (0) {}
+
+ database_type&
+ database () {return *db_;}
+
+ protected:
+ database_type* db_;
+ };
}
#include <odb/connection.ixx>