summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libsqlitepp/Jamfile.jam15
-rw-r--r--libsqlitepp/sqlite-command.cpp46
-rw-r--r--libsqlitepp/sqlite-command.h3
-rw-r--r--libsqlitepp/sqlite-connection.cpp2
-rw-r--r--libsqlitepp/sqlite-mock.cpp2
-rw-r--r--libsqlitepp/sqlite-modifycommand.cpp2
-rw-r--r--libsqlitepp/sqlite-selectcommand.cpp14
-rw-r--r--libsqlitepp/unittests/testsqlite.cpp4
8 files changed, 50 insertions, 38 deletions
diff --git a/libsqlitepp/Jamfile.jam b/libsqlitepp/Jamfile.jam
index 84e8c85..951b648 100644
--- a/libsqlitepp/Jamfile.jam
+++ b/libsqlitepp/Jamfile.jam
@@ -17,6 +17,21 @@ project
<variant>release:<lto>on
<variant>debug:<warnings>extra
<variant>debug:<warnings-as-errors>on
+ <variant>debug:<cflags>-Wnon-virtual-dtor
+ <variant>debug:<cflags>-Wold-style-cast
+ <variant>debug:<cflags>-Wcast-align
+ <variant>debug:<cflags>-Wunused
+ <variant>debug:<cflags>-Woverloaded-virtual
+ <variant>debug:<cflags>-Wpedantic
+ <variant>debug:<cflags>-Wconversion
+ <variant>debug:<cflags>-Wsign-conversion
+ <variant>debug:<cflags>-Wnull-dereference
+ <variant>debug:<cflags>-Wdouble-promotion
+ <variant>debug:<cflags>-Wformat=2
+ <toolset>gcc,<variant>debug:<cflags>-Wduplicated-cond
+ <toolset>gcc,<variant>debug:<cflags>-Wduplicated-branches
+ <toolset>gcc,<variant>debug:<cflags>-Wlogical-op
+ <toolset>gcc,<variant>debug:<cflags>-Wuseless-cast
<variant>coverage:<coverage>on
;
diff --git a/libsqlitepp/sqlite-command.cpp b/libsqlitepp/sqlite-command.cpp
index 124b5d0..694c5d2 100644
--- a/libsqlitepp/sqlite-command.cpp
+++ b/libsqlitepp/sqlite-command.cpp
@@ -5,7 +5,7 @@
SQLite::Command::Command(const Connection * conn, const std::string & sql) : DB::Command(sql), c(conn), stmt(nullptr)
{
- if (sqlite3_prepare_v2(conn->db, sql.c_str(), sql.length(), &stmt, nullptr) != SQLITE_OK) {
+ if (sqlite3_prepare_v2(conn->db, sql.c_str(), static_cast<int>(sql.length()), &stmt, nullptr) != SQLITE_OK) {
throw Error(conn->db);
}
}
@@ -15,61 +15,54 @@ SQLite::Command::~Command()
sqlite3_finalize(stmt);
}
+template<typename V, typename BinderFunction>
void
-SQLite::Command::bindParamI(unsigned int n, int v)
+SQLite::Command::bindWith(unsigned int n, const V & v, BinderFunction binder) const
{
- if (sqlite3_bind_int(stmt, (int)n + 1, v) != SQLITE_OK) {
+ if (binder(stmt, static_cast<int>(n + 1), v) != SQLITE_OK) {
throw Error(c->db);
}
}
+
+void
+SQLite::Command::bindParamI(unsigned int n, int v)
+{
+ bindWith(n, v, sqlite3_bind_int);
+}
void
SQLite::Command::bindParamI(unsigned int n, long int v)
{
- if (sqlite3_bind_int64(stmt, (int)n + 1, v) != SQLITE_OK) {
- throw Error(c->db);
- }
+ bindWith(n, v, sqlite3_bind_int64);
}
void
SQLite::Command::bindParamI(unsigned int n, long long int v)
{
- if (sqlite3_bind_int64(stmt, (int)n + 1, v) != SQLITE_OK) {
- throw Error(c->db);
- }
+ bindWith(n, v, sqlite3_bind_int64);
}
void
SQLite::Command::bindParamI(unsigned int n, unsigned int v)
{
- if (sqlite3_bind_int64(stmt, (int)n + 1, v) != SQLITE_OK) {
- throw Error(c->db);
- }
+ bindWith(n, v, sqlite3_bind_int64);
}
void
SQLite::Command::bindParamI(unsigned int n, long unsigned int v)
{
- if (sqlite3_bind_int64(stmt, (int)n + 1, v) != SQLITE_OK) {
- throw Error(c->db);
- }
+ bindWith(n, static_cast<sqlite3_int64>(v), sqlite3_bind_int64);
}
void
SQLite::Command::bindParamI(unsigned int n, long long unsigned int v)
{
- if (sqlite3_bind_int64(stmt, (int)n + 1, v) != SQLITE_OK) {
- throw Error(c->db);
- }
+ bindWith(n, static_cast<sqlite3_int64>(v), sqlite3_bind_int64);
}
void
SQLite::Command::bindParamF(unsigned int n, double v)
{
- if (sqlite3_bind_double(stmt, (int)n + 1, v) != SQLITE_OK) {
- throw Error(c->db);
- }
+ bindWith(n, v, sqlite3_bind_double);
}
void
SQLite::Command::bindParamF(unsigned int n, float v)
{
- if (sqlite3_bind_double(stmt, (int)n + 1, v) != SQLITE_OK) {
- throw Error(c->db);
- }
+ bindWith(n, static_cast<double>(v), sqlite3_bind_double);
}
void
SQLite::Command::bindParamS(unsigned int n, const Glib::ustring & s)
@@ -79,7 +72,8 @@ SQLite::Command::bindParamS(unsigned int n, const Glib::ustring & s)
void
SQLite::Command::bindParamS(unsigned int n, const std::string_view & s)
{
- if (sqlite3_bind_text(stmt, (int)n + 1, s.data(), s.length(), SQLITE_STATIC) != SQLITE_OK) {
+ if (sqlite3_bind_text(stmt, static_cast<int>(n + 1), s.data(), static_cast<int>(s.length()), SQLITE_STATIC)
+ != SQLITE_OK) {
throw Error(c->db);
}
}
@@ -101,7 +95,7 @@ SQLite::Command::bindParamT(unsigned int, const boost::posix_time::ptime &)
void
SQLite::Command::bindNull(unsigned int n)
{
- if (sqlite3_bind_null(stmt, (int)n + 1) != SQLITE_OK) {
+ if (sqlite3_bind_null(stmt, static_cast<int>(n + 1)) != SQLITE_OK) {
throw Error(c->db);
}
}
diff --git a/libsqlitepp/sqlite-command.h b/libsqlitepp/sqlite-command.h
index abf02ee..1bf93c4 100644
--- a/libsqlitepp/sqlite-command.h
+++ b/libsqlitepp/sqlite-command.h
@@ -32,6 +32,9 @@ namespace SQLite {
void bindNull(unsigned int) override;
protected:
+ template<typename V, typename BinderFunction>
+ void bindWith(unsigned int n, const V & v, BinderFunction binder) const;
+
const Connection * c;
sqlite3_stmt * stmt;
};
diff --git a/libsqlitepp/sqlite-connection.cpp b/libsqlitepp/sqlite-connection.cpp
index 99006dc..e1a6de7 100644
--- a/libsqlitepp/sqlite-connection.cpp
+++ b/libsqlitepp/sqlite-connection.cpp
@@ -3,7 +3,7 @@
#include "sqlite-modifycommand.h"
#include "sqlite-selectcommand.h"
-NAMEDFACTORY("sqlite", SQLite::Connection, DB::ConnectionFactory);
+NAMEDFACTORY("sqlite", SQLite::Connection, DB::ConnectionFactory)
SQLite::ConnectionError::ConnectionError(sqlite3 * db) : SQLite::Error(db) { }
diff --git a/libsqlitepp/sqlite-mock.cpp b/libsqlitepp/sqlite-mock.cpp
index 4772bcc..11f4f90 100644
--- a/libsqlitepp/sqlite-mock.cpp
+++ b/libsqlitepp/sqlite-mock.cpp
@@ -2,7 +2,7 @@
#include "sqlite-connection.h"
#include <boost/lexical_cast.hpp>
-NAMEDFACTORY("sqlite", SQLite::Mock, DB::MockDatabaseFactory);
+NAMEDFACTORY("sqlite", SQLite::Mock, DB::MockDatabaseFactory)
namespace SQLite {
diff --git a/libsqlitepp/sqlite-modifycommand.cpp b/libsqlitepp/sqlite-modifycommand.cpp
index 868f187..df859ca 100644
--- a/libsqlitepp/sqlite-modifycommand.cpp
+++ b/libsqlitepp/sqlite-modifycommand.cpp
@@ -15,7 +15,7 @@ SQLite::ModifyCommand::execute(bool anc)
sqlite3_reset(stmt);
throw Error(c->db);
}
- unsigned int rows = sqlite3_changes(c->db);
+ unsigned int rows = static_cast<unsigned int>(sqlite3_changes(c->db));
sqlite3_reset(stmt);
if (rows == 0 && !anc) {
throw DB::NoRowsAffected();
diff --git a/libsqlitepp/sqlite-selectcommand.cpp b/libsqlitepp/sqlite-selectcommand.cpp
index c4a1096..e360dcd 100644
--- a/libsqlitepp/sqlite-selectcommand.cpp
+++ b/libsqlitepp/sqlite-selectcommand.cpp
@@ -13,23 +13,23 @@ namespace SQLite {
[[nodiscard]] bool
isNull() const override
{
- return (SQLITE_NULL == sqlite3_column_type(stmt, (int)colNo));
+ return (SQLITE_NULL == sqlite3_column_type(stmt, static_cast<int>(colNo)));
}
void
apply(DB::HandleField & h) const override
{
- switch (sqlite3_column_type(stmt, (int)colNo)) {
+ switch (sqlite3_column_type(stmt, static_cast<int>(colNo))) {
case SQLITE_INTEGER:
- h.integer(sqlite3_column_int64(stmt, (int)colNo));
+ h.integer(sqlite3_column_int64(stmt, static_cast<int>(colNo)));
return;
case SQLITE_FLOAT:
- h.floatingpoint(sqlite3_column_double(stmt, (int)colNo));
+ h.floatingpoint(sqlite3_column_double(stmt, static_cast<int>(colNo)));
return;
case SQLITE_TEXT: {
- auto t = sqlite3_column_text(stmt, (int)colNo);
- auto l = sqlite3_column_bytes(stmt, (int)colNo);
- h.string({reinterpret_cast<const char *>(t), (std::size_t)l});
+ auto t = sqlite3_column_text(stmt, static_cast<int>(colNo));
+ auto l = sqlite3_column_bytes(stmt, static_cast<int>(colNo));
+ h.string({reinterpret_cast<const char *>(t), static_cast<std::size_t>(l)});
return;
}
case SQLITE_NULL:
diff --git a/libsqlitepp/unittests/testsqlite.cpp b/libsqlitepp/unittests/testsqlite.cpp
index 81127c8..37f17ce 100644
--- a/libsqlitepp/unittests/testsqlite.cpp
+++ b/libsqlitepp/unittests/testsqlite.cpp
@@ -16,7 +16,7 @@ public:
BOOST_GLOBAL_FIXTURE(StandardMockDatabase);
-BOOST_FIXTURE_TEST_SUITE(Core, DB::TestCore);
+BOOST_FIXTURE_TEST_SUITE(Core, DB::TestCore)
BOOST_AUTO_TEST_CASE(transactions)
{
@@ -63,4 +63,4 @@ BOOST_AUTO_TEST_CASE(bindAndSelect)
BOOST_REQUIRE_EQUAL(1, rows);
}
-BOOST_AUTO_TEST_SUITE_END();
+BOOST_AUTO_TEST_SUITE_END()