@@ -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