7f73771ba2
added preliminary FTE_SQL code (not in a usable state), current problems: WINDOWS ONLY, database connect is hardcoded to a local server, conditional wait needed for worker thread (currently consumes 100% cpu), query requests and results should be a queue not a stack, sql init and deinit is in the wrong place, project and defines need updating, tons more things git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@2941 fc73d0e0-1445-4013-8a0c-d673dee63da5
130 lines
No EOL
4 KiB
C
130 lines
No EOL
4 KiB
C
#ifndef MYSQLDLL_H
|
|
#define MYSQLDLL_H
|
|
|
|
#include <mysql.h>
|
|
|
|
HINSTANCE mysqldll;
|
|
int mysqldllerror;
|
|
|
|
#define MYSQLDLL_NOCONV
|
|
|
|
#define MYSQLDLL_LOADFUNC(funcname) \
|
|
int loaded_##funcname = 0; \
|
|
int funcload_##funcname() \
|
|
{ \
|
|
if (mysqldll) \
|
|
{ \
|
|
if (!loaded_##funcname) \
|
|
{ \
|
|
cb_##funcname = (DLLFUNC_##funcname)GetProcAddress(mysqldll, #funcname); \
|
|
loaded_##funcname = 1; \
|
|
mysqldllerror = GetLastError(); \
|
|
\
|
|
} \
|
|
return (cb_##funcname != NULL); \
|
|
} \
|
|
return 0; \
|
|
}
|
|
|
|
#define MYSQLDLL_FUNC0(returntype, funcname) \
|
|
typedef returntype (CALLBACK *DLLFUNC_##funcname)(); \
|
|
DLLFUNC_##funcname cb_##funcname; \
|
|
MYSQLDLL_LOADFUNC(funcname) \
|
|
returntype STDCALL funcname() \
|
|
{ \
|
|
if (funcload_##funcname()) \
|
|
return cb_##funcname(); \
|
|
return (returntype)0; \
|
|
}
|
|
|
|
#define MYSQLDLL_FUNC1(returntype, funcname, paramtype1) \
|
|
typedef returntype (CALLBACK *DLLFUNC_##funcname)(paramtype1); \
|
|
DLLFUNC_##funcname cb_##funcname; \
|
|
MYSQLDLL_LOADFUNC(funcname) \
|
|
returntype STDCALL funcname(paramtype1 p1) \
|
|
{ \
|
|
if (funcload_##funcname()) \
|
|
return cb_##funcname(p1); \
|
|
return (returntype)0; \
|
|
}
|
|
|
|
#define MYSQLDLL_FUNC2(returntype, funcname, paramtype1, paramtype2) \
|
|
typedef returntype (CALLBACK *DLLFUNC_##funcname)(paramtype1, paramtype2); \
|
|
DLLFUNC_##funcname cb_##funcname; \
|
|
MYSQLDLL_LOADFUNC(funcname) \
|
|
returntype STDCALL funcname(paramtype1 p1, paramtype2 p2) \
|
|
{ \
|
|
if (funcload_##funcname()) \
|
|
return cb_##funcname(p1, p2); \
|
|
return (returntype)0; \
|
|
}
|
|
|
|
#define MYSQLDLL_FUNC3(returntype, funcname, paramtype1, paramtype2, paramtype3) \
|
|
typedef returntype (CALLBACK *DLLFUNC_##funcname)(paramtype1, paramtype2, paramtype3); \
|
|
DLLFUNC_##funcname cb_##funcname; \
|
|
MYSQLDLL_LOADFUNC(funcname) \
|
|
returntype STDCALL funcname(paramtype1 p1, paramtype2 p2, paramtype3 p3) \
|
|
{ \
|
|
if (funcload_##funcname()) \
|
|
return cb_##funcname(p1, p2, p3); \
|
|
return (returntype)0; \
|
|
}
|
|
|
|
#define MYSQLDLL_FUNC4(returntype, funcname, paramtype1, paramtype2, paramtype3, paramtype4) \
|
|
typedef returntype (CALLBACK *DLLFUNC_##funcname)(paramtype1, paramtype2, paramtype3, paramtype4); \
|
|
DLLFUNC_##funcname cb_##funcname; \
|
|
MYSQLDLL_LOADFUNC(funcname) \
|
|
returntype STDCALL funcname(paramtype1 p1, paramtype2 p2, paramtype3 p3, paramtype4 p4) \
|
|
{ \
|
|
if (funcload_##funcname()) \
|
|
return cb_##funcname(p1, p2, p3, p4); \
|
|
return (returntype)0; \
|
|
}
|
|
|
|
#define MYSQLDLL_FUNC8(returntype, funcname, paramtype1, paramtype2, paramtype3, paramtype4, paramtype5, paramtype6, paramtype7, paramtype8) \
|
|
typedef returntype (CALLBACK *DLLFUNC_##funcname)(paramtype1, paramtype2, paramtype3, paramtype4, paramtype5, paramtype6, paramtype7, paramtype8); \
|
|
DLLFUNC_##funcname cb_##funcname; \
|
|
MYSQLDLL_LOADFUNC(funcname) \
|
|
returntype STDCALL funcname(paramtype1 p1, paramtype2 p2, paramtype3 p3, paramtype4 p4, paramtype5 p5, paramtype6 p6, paramtype7 p7, paramtype8 p8) \
|
|
{ \
|
|
if (funcload_##funcname()) \
|
|
return cb_##funcname(p1, p2, p3, p4, p5, p6, p7, p8); \
|
|
return (returntype)0; \
|
|
}
|
|
|
|
#define MYSQLDLL_NORETFUNC0(funcname) \
|
|
typedef void (CALLBACK *DLLFUNC_##funcname)(); \
|
|
DLLFUNC_##funcname cb_##funcname; \
|
|
MYSQLDLL_LOADFUNC(funcname) \
|
|
void STDCALL funcname() \
|
|
{ \
|
|
if (funcload_##funcname()) \
|
|
cb_##funcname(); \
|
|
}
|
|
|
|
#define MYSQLDLL_NORETFUNC1(funcname, paramtype1) \
|
|
typedef void (CALLBACK *DLLFUNC_##funcname)(paramtype1); \
|
|
DLLFUNC_##funcname cb_##funcname; \
|
|
MYSQLDLL_LOADFUNC(funcname) \
|
|
void STDCALL funcname(paramtype1 p1) \
|
|
{ \
|
|
if (funcload_##funcname()) \
|
|
cb_##funcname(p1); \
|
|
}
|
|
|
|
#define MYSQLDLL_NORETFUNC2(funcname, paramtype1, paramtype2) \
|
|
typedef void (CALLBACK *DLLFUNC_##funcname)(paramtype1, paramtype2); \
|
|
DLLFUNC_##funcname cb_##funcname; \
|
|
MYSQLDLL_LOADFUNC(funcname) \
|
|
void STDCALL funcname(paramtype1 p1, paramtype2 p2) \
|
|
{ \
|
|
if (funcload_##funcname()) \
|
|
cb_##funcname(p1, p2); \
|
|
}
|
|
|
|
|
|
// prototypes
|
|
int mysql_dll_init();
|
|
int mysql_dll_close();
|
|
|
|
#endif |