From 733c92e753752d757111306ee7c9024ff843955d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Rombauts?= Date: Fri, 30 Mar 2012 22:31:22 +0200 Subject: [PATCH] Start of a new thin C++ header only SQLite wrapper --- .gitignore | 2 ++ Makefile | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++ src/main.cpp | 19 ++++++++++++++++ src/sqlite.hpp | 30 ++++++++++++++++++++++++ 4 files changed, 113 insertions(+) create mode 100644 .gitignore create mode 100644 Makefile create mode 100644 src/main.cpp create mode 100644 src/sqlite.hpp diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0f3a6b1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +Debug +Release diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..7e11d90 --- /dev/null +++ b/Makefile @@ -0,0 +1,62 @@ + +### Options: ### + +# C++ compiler +CXX = g++ + +# flags for C++ +CXXFLAGS ?= -Wall + +# [Debug,Release] +BUILD ?= Debug + +### Conditionally set variables: ### + +ifeq ($(BUILD),Debug) +BUILD_FLAGS = -g -rdynamic -fno-inline -O0 -DDEBUG -D_DEBUG +endif +ifeq ($(BUILD),Release) +BUILD_FLAGS = -O2 +endif +ifeq ($(BUILD),Debug) +LINK_FLAGS = -g -rdynamic +endif +ifeq ($(BUILD),Release) +LINK_FLAGS = +endif + +### Variables: ### + +CPPDEPS = -MT $@ -MF`echo $@ | sed -e 's,\.o$$,.d,'` -MD -MP + +SQLITE_CXXFLAGS = $(BUILD_FLAGS) $(CXXFLAGS) +SQLITE_EXAMPLE1_OBJECTS = \ + $(BUILD)/main.o + +### Targets: ### + +all: $(BUILD) $(BUILD)/example1 + +clean: + rm -f $(BUILD)/*.o + rm -f $(BUILD)/*.d + rm -f $(BUILD)/example1 + +$(BUILD): $(BUILD)/ + mkdir -p $(BUILD) + + +$(BUILD)/example1: $(SQLITE_EXAMPLE1_OBJECTS) + $(CXX) -o $@ $(SQLITE_EXAMPLE1_OBJECTS) $(LINK_FLAGS) -lsqlite3 + + +$(BUILD)/main.o: src/main.cpp + $(CXX) -c -o $@ $(SQLITE_CXXFLAGS) $(CPPDEPS) $< + + +.PHONY: all clean + + +# Dependencies tracking: +-include $(BUILD)/*.d + diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 0000000..1930702 --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,19 @@ +#include +#include "sqlite.hpp" + + +int main (void) +{ + std::cout << "Hello SQLite.hpp\n"; + try + { + SQLite::Database db("sqlite.db3"); + } + catch (std::exception& e) + { + std::cout << e.what() << std::endl; + } + std::cout << "Bye SQLite.hpp\n"; + + return 0; +} diff --git a/src/sqlite.hpp b/src/sqlite.hpp new file mode 100644 index 0000000..158ad41 --- /dev/null +++ b/src/sqlite.hpp @@ -0,0 +1,30 @@ +#include +#include + +namespace SQLite +{ + +class Database +{ +public: + explicit Database(const char* apFilenameUt8, const bool abReadOnly = false) : + mpSQLite(NULL) + { + int err = sqlite3_open_v2(apFilenameUt8, &mpSQLite, abReadOnly?SQLITE_OPEN_READONLY:SQLITE_OPEN_READWRITE, NULL); + if (SQLITE_OK != err) + { + std::string strerr = sqlite3_errmsg(mpSQLite); + sqlite3_close(mpSQLite); + throw std::runtime_error(strerr); + } + } + virtual ~Database(void) + { + sqlite3_close(mpSQLite); + } + +private: + sqlite3* mpSQLite; +}; + +};