]> jfr.im git - irc/quakenet/newserv.git/blame - dbapi2/dbapi2.h
TRUSTS: require sqlite
[irc/quakenet/newserv.git] / dbapi2 / dbapi2.h
CommitLineData
404d307c
CP
1#ifndef __DBAPI2_H
2#define __DBAPI2_H
3
4#define DBNAME_LEN 100
5
39c33a3d
CP
6#include "../config.h"
7
404d307c 8#define DBAPI2_DEFAULT NULL
404d307c
CP
9
10#include <stdlib.h>
adf9e9ea 11#include <stdarg.h>
404d307c
CP
12
13struct DBAPIConn;
14
15#ifndef DBAPI2_HANDLE
16#define DBAPI2_HANDLE void
17#endif
18
adf9e9ea
CP
19#ifndef DBAPI2_RESULT_HANDLE
20#define DBAPI2_RESULT_HANDLE void
21#endif
22
404d307c
CP
23typedef void *DBAPIUserData;
24
25struct DBAPIResult;
26
4a532778 27typedef DBAPI2_HANDLE *(*DBAPINew)(const struct DBAPIConn *);
404d307c
CP
28typedef void (*DBAPIClose)(struct DBAPIConn *);
29
4a532778 30typedef void (*DBAPIQueryCallback)(const struct DBAPIResult *, void *);
404d307c 31
4a532778
CP
32typedef void (*DBAPIQuery)(const struct DBAPIConn *, DBAPIQueryCallback, DBAPIUserData, const char *, ...) __attribute__ ((format (printf, 4, 5)));
33typedef void (*DBAPISimpleQuery)(const struct DBAPIConn *, const char *, ...) __attribute__ ((format (printf, 2, 3)));
24e1aba8 34typedef void (*DBAPIQueryV)(const struct DBAPIConn *, DBAPIQueryCallback, DBAPIUserData, const char *);
4d47ff97 35typedef void (*DBAPICallV)(const struct DBAPIConn *, DBAPIQueryCallback, DBAPIUserData, const char *, const char *);
4a532778 36typedef void (*DBAPICreateTable)(const struct DBAPIConn *, DBAPIQueryCallback, DBAPIUserData, const char *, ...) __attribute__ ((format (printf, 4, 5)));
24e1aba8 37typedef void (*DBAPICreateTableV)(const struct DBAPIConn *, DBAPIQueryCallback, DBAPIUserData, const char *);
4a532778 38typedef void (*DBAPILoadTable)(const struct DBAPIConn *, DBAPIQueryCallback, DBAPIQueryCallback, DBAPIQueryCallback, DBAPIUserData, const char *);
404d307c 39
4a532778 40typedef void (*DBAPISafeQuery)(const struct DBAPIConn *, DBAPIQueryCallback, DBAPIUserData, const char *, const char *, ...);
4a532778 41typedef void (*DBAPISafeSimpleQuery)(const struct DBAPIConn *, const char *, const char *, ...);
24e1aba8 42typedef void (*DBAPISafeCreateTable)(const struct DBAPIConn *, DBAPIQueryCallback, DBAPIUserData, const char *, const char *, ...);
404d307c 43
4a532778
CP
44typedef void (*DBAPIEscapeString)(const struct DBAPIConn *, char *, const char *, size_t);
45typedef int (*DBAPIQuoteString)(const struct DBAPIConn *, char *, size_t, const char *, size_t);
4d47ff97
CP
46typedef void (*DBAPICall)(const struct DBAPIConn *, DBAPIQueryCallback, DBAPIUserData, const char *, const char *, const char *, ...);
47typedef void (*DBAPISimpleCall)(const struct DBAPIConn *, const char *, const char *, const char *, ...);
404d307c 48
4a532778 49typedef char *(*DBAPITableName)(const struct DBAPIConn *, const char *);
4277aef7 50
404d307c
CP
51struct DBAPIProviderData;
52
53typedef struct DBAPIProvider {
54 DBAPINew new;
55 DBAPIClose close;
56
adf9e9ea 57 DBAPIQueryV query;
24e1aba8 58 DBAPICreateTableV createtable;
404d307c 59 DBAPILoadTable loadtable;
4277aef7
CP
60
61 DBAPITableName tablename;
62
404d307c
CP
63 DBAPIEscapeString escapestring;
64 DBAPIQuoteString quotestring;
4d47ff97 65 DBAPICallV call;
404d307c
CP
66
67/* private members */
68 struct DBAPIProviderData *__providerdata;
69} DBAPIProvider;
70
71typedef struct DBAPIConn {
72 DBAPIClose close;
73
e4b54524
CP
74 DBAPIQuery unsafequery;
75 DBAPISimpleQuery unsafesquery;
76 DBAPICreateTable unsafecreatetable;
404d307c
CP
77 DBAPILoadTable loadtable;
78 DBAPIEscapeString escapestring; /* deprecated */
4277aef7 79 DBAPITableName tablename;
404d307c 80
e4b54524
CP
81 DBAPISafeQuery query;
82 DBAPISafeSimpleQuery squery;
83 DBAPISafeCreateTable createtable;
24e1aba8 84
4d47ff97
CP
85 DBAPICall call;
86 DBAPISimpleCall scall;
87
404d307c
CP
88 char name[DBNAME_LEN+1];
89
90 void *handle;
91
92/* private members */
93 DBAPIClose __close;
94 DBAPIQuoteString __quotestring;
adf9e9ea 95 DBAPIQueryV __query;
24e1aba8 96 DBAPICreateTableV __createtable;
6df405fb 97 DBAPILoadTable __loadtable;
4d47ff97 98 DBAPICallV __call;
404d307c
CP
99} DBAPIConn;
100
4a532778
CP
101typedef char *(*DBAPIResultGet)(const struct DBAPIResult *, unsigned int);
102typedef int (*DBAPIResultNext)(const struct DBAPIResult *);
103typedef void (*DBAPIResultClear)(const struct DBAPIResult *);
adf9e9ea
CP
104
105typedef struct DBAPIResult {
106 DBAPI2_RESULT_HANDLE *handle;
107
1bc49a08 108 unsigned short success, fields, affected;
adf9e9ea
CP
109
110 DBAPIResultGet get;
111 DBAPIResultNext next;
112 DBAPIResultClear clear;
113} DBAPIResult;
114
404d307c
CP
115int registerdbprovider(const char *, DBAPIProvider *);
116void deregisterdbprovider(int);
39c33a3d 117DBAPIConn *dbapi2open(const char *, const char *);
404d307c 118
404d307c 119#endif