summaryrefslogtreecommitdiff
path: root/platform/default/sqlite3.hpp
diff options
context:
space:
mode:
authorBruno de Oliveira Abinader <bruno@mapbox.com>2017-01-03 18:49:52 -0400
committerBruno de Oliveira Abinader <bruno@mapbox.com>2017-01-23 19:06:53 +0200
commit97b433edc99f5b7212915aab483e119f60fde101 (patch)
treeddbc208040b64d56610626480850447c6e4c5f79 /platform/default/sqlite3.hpp
parentfbe0320c9cff014f2a4d4f2c5f3a85531078b501 (diff)
downloadqtlocation-mapboxgl-97b433edc99f5b7212915aab483e119f60fde101.tar.gz
[core] Private implementation for SQLite interface
Diffstat (limited to 'platform/default/sqlite3.hpp')
-rw-r--r--platform/default/sqlite3.hpp15
1 files changed, 8 insertions, 7 deletions
diff --git a/platform/default/sqlite3.hpp b/platform/default/sqlite3.hpp
index 8e4a4b971e..dac7b6f650 100644
--- a/platform/default/sqlite3.hpp
+++ b/platform/default/sqlite3.hpp
@@ -4,9 +4,7 @@
#include <vector>
#include <stdexcept>
#include <chrono>
-
-typedef struct sqlite3 sqlite3;
-typedef struct sqlite3_stmt sqlite3_stmt;
+#include <memory>
namespace mapbox {
namespace sqlite {
@@ -27,7 +25,9 @@ struct Exception : std::runtime_error {
const int code = 0;
};
+class DatabaseImpl;
class Statement;
+class StatementImpl;
class Database {
private:
@@ -42,7 +42,6 @@ public:
explicit operator bool() const;
- static void errorLogCallback(void *arg, const int err, const char *msg);
void setBusyTimeout(std::chrono::milliseconds);
void exec(const std::string &sql);
Statement prepare(const char *query);
@@ -51,7 +50,9 @@ public:
uint64_t changes() const;
private:
- sqlite3 *db = nullptr;
+ std::unique_ptr<DatabaseImpl> impl;
+
+ friend class Statement;
};
class Statement {
@@ -62,7 +63,7 @@ private:
void check(int err);
public:
- Statement(sqlite3 *db, const char *sql);
+ Statement(Database *db, const char *sql);
Statement(Statement &&);
~Statement();
Statement &operator=(Statement &&);
@@ -86,7 +87,7 @@ public:
void clearBindings();
private:
- sqlite3_stmt *stmt = nullptr;
+ std::unique_ptr<StatementImpl> impl;
};
class Transaction {