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/prepared-query.hxx | |
parent | 5c705a90d348a2a9428d5121a24eb47d0d73eb39 (diff) |
Completion of prepared query support
Diffstat (limited to 'odb/prepared-query.hxx')
-rw-r--r-- | odb/prepared-query.hxx | 32 |
1 files changed, 29 insertions, 3 deletions
diff --git a/odb/prepared-query.hxx b/odb/prepared-query.hxx index 60ae48d..e4c9c2b 100644 --- a/odb/prepared-query.hxx +++ b/odb/prepared-query.hxx @@ -10,6 +10,7 @@ #include <odb/forward.hxx> #include <odb/traits.hxx> #include <odb/result.hxx> +#include <odb/statement.hxx> #include <odb/details/export.hxx> #include <odb/details/shared-ptr.hxx> @@ -22,12 +23,19 @@ namespace odb ~prepared_query_impl (); const char* name; + details::shared_ptr<statement> stmt; details::shared_ptr<result_impl> (*execute) (prepared_query_impl&); }; template <typename T> struct prepared_query { + prepared_query () {} + + explicit + prepared_query (details::shared_ptr<prepared_query_impl> impl) + : impl_ (impl) {} + result<T> execute (bool cache = true) { @@ -46,11 +54,29 @@ namespace odb return r; } - explicit - prepared_query (details::shared_ptr<prepared_query_impl> impl) - : impl_ (impl) {} + const char* + name () const + { + return impl_->name; + } + + typedef odb::statement statement_type; + + statement_type& + statement () const + { + return *impl_->stmt; + } + + typedef details::shared_ptr<prepared_query_impl> + prepared_query::*unspecified_bool_type; + operator unspecified_bool_type () const + { + return impl_ ? &prepared_query::impl_ : 0; + } private: + friend class connection; details::shared_ptr<prepared_query_impl> impl_; }; |