summaryrefslogtreecommitdiff
path: root/odb/sqlite/auto-handle.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'odb/sqlite/auto-handle.hxx')
-rw-r--r--odb/sqlite/auto-handle.hxx101
1 files changed, 0 insertions, 101 deletions
diff --git a/odb/sqlite/auto-handle.hxx b/odb/sqlite/auto-handle.hxx
deleted file mode 100644
index d25e919..0000000
--- a/odb/sqlite/auto-handle.hxx
+++ /dev/null
@@ -1,101 +0,0 @@
-// file : odb/sqlite/auto-handle.hxx
-// license : GNU GPL v2; see accompanying LICENSE file
-
-#ifndef ODB_SQLITE_AUTO_HANDLE_HXX
-#define ODB_SQLITE_AUTO_HANDLE_HXX
-
-#include <odb/pre.hxx>
-
-#include <cassert>
-#include <sqlite3.h>
-
-#include <odb/sqlite/version.hxx>
-
-namespace odb
-{
- namespace sqlite
- {
- template <typename H>
- struct handle_traits;
-
- template <>
- struct handle_traits<sqlite3>
- {
- static void
- release (sqlite3* h)
- {
- if (sqlite3_close (h) == SQLITE_BUSY)
- {
- // Connection has outstanding prepared statements.
- //
- assert (false);
- }
- }
- };
-
- template <>
- struct handle_traits<sqlite3_stmt>
- {
- static void
- release (sqlite3_stmt* h)
- {
- sqlite3_finalize (h);
- }
- };
-
- template <typename H>
- class auto_handle
- {
- public:
- auto_handle (H* h = 0)
- : h_ (h)
- {
- }
-
- ~auto_handle ()
- {
- if (h_ != 0)
- handle_traits<H>::release (h_);
- }
-
- H*
- get () const
- {
- return h_;
- }
-
- void
- reset (H* h = 0)
- {
- if (h_ != 0)
- handle_traits<H>::release (h_);
-
- h_ = h;
- }
-
- H*
- release ()
- {
- H* h (h_);
- h_ = 0;
- return h;
- }
-
- operator H* () const
- {
- return h_;
- }
-
- private:
- auto_handle (const auto_handle&);
- auto_handle& operator= (const auto_handle&);
-
- private:
- H* h_;
- };
- }
-}
-
-#include <odb/post.hxx>
-
-#endif // ODB_SQLITE_AUTO_HANDLE_HXX