Uh oh!
There was an error while loading. Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSQLiteDLLConnect.cpp
More file actions
Latest commit
106 lines (90 loc) · 2.89 KB
/
Copy pathSQLiteDLLConnect.cpp
File metadata and controls
106 lines (90 loc) · 2.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#include<windows.h>
#include"SQLiteDLLConnect.h"
#include<cassert>
#include<string>
#include<system_error>
namespaceSQLite_DLL
{
template<typename TProc>
inlineboolGetProcAddressChecked(HINSTANCE hINSTANCE, const std::string& procName, TProc& typeFunc)
{
if (hINSTANCE == NULL)
returnfalse;
PROC ret = GetProcAddress(hINSTANCE, procName.c_str());
if (!ret)
throwstd::system_error(GetLastError(), std::system_category(), "GetProcAddress failed");
typeFunc = reinterpret_cast<TProc>(ret);
returntrue;
}
staticHINSTANCE HinstanceSqliteDll = NULL;
typedefint (WINAPI* SQLITE3_CONFIG)(int, ...);
staticSQLITE3_CONFIG SQLite3_config;
typedefchar* (WINAPI* SQLITE3_MPRINTF)(constchar*, ...);
staticSQLITE3_MPRINTF SQLite3_mprintf;
typedefchar* (WINAPI* SQLITE3_SNPRINTF)(int, char*, constchar*, ...);
staticSQLITE3_SNPRINTF SQLite3_snprintf;
typedefint (WINAPI* SQLITE3_DB_CONFIG)(sqlite3*, int op, ...);
staticSQLITE3_DB_CONFIG SQLite3_db_config;
typedefvoid (WINAPI* SQLITE3_LOG)(int iErrCode, constchar* zFormat, ...);
staticSQLITE3_LOG SQLite3_log;
typedefint (WINAPI* SQLITE3_VTAB_CONFIG)(sqlite3*, int op, ...);
staticSQLITE3_VTAB_CONFIG SQLite3_vtab_config;
RunTimeConnect::RunTimeConnect(std::string DllFileName)
{
HinstanceSqliteDll = LoadLibraryA(DllFileName.c_str());
assert(GetProcAddressChecked(HinstanceSqliteDll, "sqlite3_config", SQLite3_config));
assert(GetProcAddressChecked(HinstanceSqliteDll, "sqlite3_mprintf", SQLite3_mprintf));
assert(GetProcAddressChecked(HinstanceSqliteDll, "sqlite3_snprintf", SQLite3_snprintf));
assert(GetProcAddressChecked(HinstanceSqliteDll, "sqlite3_db_config", SQLite3_db_config));
assert(GetProcAddressChecked(HinstanceSqliteDll, "sqlite3_log", SQLite3_log));
assert(GetProcAddressChecked(HinstanceSqliteDll, "sqlite3_vtab_config", SQLite3_vtab_config));
}
#pragma warning (disable : 4793)
intRunTimeConnect::sqlite3_config(int arg, ...)
{
va_list ap;
va_start(ap, arg);
int r = SQLite3_config(arg, ap);
va_end(ap);
return r;
}
char* RunTimeConnect::sqlite3_mprintf(constchar* arg, ...)
{
va_list ap;
va_start(ap, arg);
char* r = SQLite3_mprintf(arg, ap);
va_end(ap);
return r;
}
char* RunTimeConnect::sqlite3_snprintf(int i, char* arg, constchar* arg2, ...)
{
va_list ap;
va_start(ap, arg2);
char* r = SQLite3_snprintf(i, arg, arg2, ap);
va_end(ap);
return r;
}
intRunTimeConnect::sqlite3_db_config(sqlite3* db, int arg, ...)
{
va_list ap;
va_start(ap, arg);
int r = SQLite3_db_config(db, arg, ap);
va_end(ap);
return r;
}
voidRunTimeConnect::sqlite3_log(int iErrCode, constchar* arg, ...)
{
va_list ap;
va_start(ap, arg);
SQLite3_log(iErrCode, arg, ap);
va_end(ap);
}
intRunTimeConnect::sqlite3_vtab_config(sqlite3* db, int arg, ...)
{
va_list ap;
va_start(ap, arg);
int r = SQLite3_vtab_config(db, arg, ap);
va_end(ap);
return r;
}
}