diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2012-10-12 17:24:44 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2012-10-19 11:38:24 +0200 |
commit | 5b0430fdf4617b396e462872d438a663b174a3a8 (patch) | |
tree | e89e0cc5b1fdff4e3f49c9c7b7607d2b90108c31 /odb/connection.ixx | |
parent | 5c705a90d348a2a9428d5121a24eb47d0d73eb39 (diff) |
Completion of prepared query support
Diffstat (limited to 'odb/connection.ixx')
-rw-r--r-- | odb/connection.ixx | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/odb/connection.ixx b/odb/connection.ixx index fd1a624..8842d8e 100644 --- a/odb/connection.ixx +++ b/odb/connection.ixx @@ -3,6 +3,7 @@ // license : GNU GPL v2; see accompanying LICENSE file #include <cstring> // std::string +#include <cassert> namespace odb { @@ -44,6 +45,63 @@ namespace odb return prepare_query<T> (n, query<T> (q)); } + template <typename T> + inline prepared_query<T> connection:: + prepare_query (const char* n, const query<T>& q) + { + return query_<T, id_default>::call (*this, n, q); + } + + template <typename T> + inline void connection:: + cache_query (const prepared_query<T>& pq) + { + assert (pq); + cache_query_ (pq.impl_, typeid (T), 0, 0, 0); + } + + template <typename T, typename P> + inline void connection:: + cache_query (const prepared_query<T>& pq, std::auto_ptr<P> params) + { + assert (pq); + assert (params.get () != 0); + cache_query_ ( + pq.impl_, typeid (T), params.get (), &typeid (P), ¶ms_deleter<P>); + params.release (); + } + +#ifdef ODB_CXX11 + template <typename T, typename P> + inline void connection:: + cache_query (const prepared_query<T>& pq, std::unique_ptr<P> params) + { + assert (pq); + assert (params); + cache_query_ ( + pq.impl_, typeid (T), params.get (), &typeid (P), ¶ms_deleter<P>); + params.release (); + } +#endif + + template <typename T> + inline prepared_query<T> connection:: + lookup_query (const char* name) const + { + return prepared_query<T> (lookup_query_ (name, typeid (T), 0, 0)); + } + + template <typename T, typename P> + inline prepared_query<T> connection:: + lookup_query (const char* name, P*& params) const + { + return prepared_query<T> ( + lookup_query_ (name, + typeid (T), + reinterpret_cast<void**> (¶ms), + &typeid (P))); + } + inline void connection:: tracer (tracer_type& t) { |