aboutsummaryrefslogtreecommitdiff
path: root/odb/prepared-query.hxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2012-10-12 17:24:44 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2012-10-19 11:38:24 +0200
commit5b0430fdf4617b396e462872d438a663b174a3a8 (patch)
treee89e0cc5b1fdff4e3f49c9c7b7607d2b90108c31 /odb/prepared-query.hxx
parent5c705a90d348a2a9428d5121a24eb47d0d73eb39 (diff)
Completion of prepared query support
Diffstat (limited to 'odb/prepared-query.hxx')
-rw-r--r--odb/prepared-query.hxx32
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_;
};