Skip to content

Commit 6ec8e43

Browse files
committed
Flag enum created and typo fixes
1 parent 4d14003 commit 6ec8e43

File tree

1 file changed

+24
-11
lines changed

1 file changed

+24
-11
lines changed

hdr/sqlite_modern_cpp.h

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -399,15 +399,28 @@ namespace sqlite {
399399
);
400400
}
401401

402+
enum class Flags {
403+
OPEN_READONLY = SQLITE_OPEN_READONLY,
404+
OPEN_READWRITE = SQLITE_OPEN_READWRITE,
405+
OPEN_CREATE = SQLITE_OPEN_CREATE,
406+
OPEN_NOMUTEX = SQLITE_OPEN_NOMUTEX,
407+
OPEN_FULLMUTEX = SQLITE_OPEN_FULLMUTEX,
408+
OPEN_SHAREDCACHE = SQLITE_OPEN_SHAREDCACHE,
409+
OPEN_PRIVATECACH = SQLITE_OPEN_PRIVATECACHE,
410+
OPEN_URI = SQLITE_OPEN_URI
411+
};
412+
Flags operator|(const Flags& a, const Flags& b) {
413+
return static_cast<Flags>(static_cast<int>(a) | static_cast<int>(b));
414+
};
402415
enum class Encoding {
403-
ANY = SQLITE_ANY,
404-
UTF8 = SQLITE_UTF8,
405-
UTF16 = SQLITE_UTF16
416+
ANY = SQLITE_ANY,
417+
UTF8 = SQLITE_UTF8,
418+
UTF16 = SQLITE_UTF16
406419
};
407420
struct sqlite_config {
408-
int flags = SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE;
409-
const char *gVfs = nullptr;
410-
Encoding encoding = Encoding::ANY;
421+
Flags flags = Flags::OPEN_READWRITE | Flags::OPEN_CREATE;
422+
const char *zVfs = nullptr;
423+
Encoding encoding = Encoding::ANY;
411424
};
412425

413426
class database {
@@ -417,21 +430,21 @@ namespace sqlite {
417430
public:
418431
database(const std::string &db_name, const sqlite_config &config = {}): _db(nullptr) {
419432
sqlite3* tmp = nullptr;
420-
auto ret = sqlite3_open_v2(db_name.data(), &tmp, config.flags, config.gVfs);
433+
auto ret = sqlite3_open_v2(db_name.data(), &tmp, static_cast<int>(config.flags), config.zVfs);
421434
_db = std::shared_ptr<sqlite3>(tmp, [=](sqlite3* ptr) { sqlite3_close_v2(ptr); }); // this will close the connection eventually when no longer needed.
422435
if(ret != SQLITE_OK) exceptions::throw_sqlite_error(ret);
423436
if(config.encoding == Encoding::UTF16)
424-
*this << R"(PRAGMA encoding = "UTF-16";)";
437+
*this << R"(PRAGMA encoding = "UTF-16";)";
425438
}
426439

427440
database(const std::u16string &db_name, const sqlite_config &config = {}): _db(nullptr) {
428-
auto db_name_utf8 = std::wstring_convert<std::codecvt_utf8_utf16<char16_t>, char16_t>().to_bytes(db_name);
441+
auto db_name_utf8 = std::wstring_convert<std::codecvt_utf8_utf16<char16_t>, char16_t>().to_bytes(db_name);
429442
sqlite3* tmp = nullptr;
430-
auto ret = sqlite3_open_v2(db_name_utf8.data(), &tmp, config.flags, config.gVfs);
443+
auto ret = sqlite3_open_v2(db_name_utf8.data(), &tmp, static_cast<int>(config.flags), config.zVfs);
431444
_db = std::shared_ptr<sqlite3>(tmp, [=](sqlite3* ptr) { sqlite3_close_v2(ptr); }); // this will close the connection eventually when no longer needed.
432445
if(ret != SQLITE_OK) exceptions::throw_sqlite_error(ret);
433446
if(config.encoding != Encoding::UTF8)
434-
*this << R"(PRAGMA encoding = "UTF-16";)";
447+
*this << R"(PRAGMA encoding = "UTF-16";)";
435448
}
436449

437450
database(std::shared_ptr<sqlite3> db):

0 commit comments

Comments
 (0)