diff options
author | louiz’ <louiz@louiz.org> | 2017-06-14 00:04:00 +0200 |
---|---|---|
committer | louiz’ <louiz@louiz.org> | 2017-06-14 00:19:15 +0200 |
commit | 9defd0ccb75b1905c308ed0437e5ccd479e3a7b8 (patch) | |
tree | 7726599198a59da5ffc486d35a372a77c6fd87aa /src/database/statement.hpp | |
parent | 41c23aab37905a97007d095c3997a0d0a9dfddda (diff) | |
download | biboumi-9defd0ccb75b1905c308ed0437e5ccd479e3a7b8.tar.gz biboumi-9defd0ccb75b1905c308ed0437e5ccd479e3a7b8.tar.bz2 biboumi-9defd0ccb75b1905c308ed0437e5ccd479e3a7b8.tar.xz biboumi-9defd0ccb75b1905c308ed0437e5ccd479e3a7b8.zip |
Add a Statement class to manage the sqlite3_stmt objects and avoid leaks
Diffstat (limited to 'src/database/statement.hpp')
-rw-r--r-- | src/database/statement.hpp | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/database/statement.hpp b/src/database/statement.hpp new file mode 100644 index 0000000..87cd70f --- /dev/null +++ b/src/database/statement.hpp @@ -0,0 +1,35 @@ +#pragma once + +#include <sqlite3.h> + +class Statement +{ + public: + Statement(sqlite3_stmt* stmt): + stmt(stmt) {} + ~Statement() + { + sqlite3_finalize(this->stmt); + } + + Statement(const Statement&) = delete; + Statement& operator=(const Statement&) = delete; + Statement(Statement&& other): + stmt(other.stmt) + { + other.stmt = nullptr; + } + Statement& operator=(Statement&& other) + { + this->stmt = other.stmt; + other.stmt = nullptr; + return *this; + } + sqlite3_stmt* get() + { + return this->stmt; + } + + private: + sqlite3_stmt* stmt; +}; |