]> jfr.im git - irc/quakenet/newserv.git/blob - dbapi2/dbapi2.h
6d6d222b12ae1452851058aa492400914b89d361
[irc/quakenet/newserv.git] / dbapi2 / dbapi2.h
1 #ifndef __DBAPI2_H
2 #define __DBAPI2_H
3
4 #define DBNAME_LEN 100
5
6 #include "../config.h"
7
8 #define DBAPI2_DEFAULT NULL
9
10 #include <stdlib.h>
11 #include <stdarg.h>
12
13 struct DBAPIConn;
14
15 #ifndef DBAPI2_HANDLE
16 #define DBAPI2_HANDLE void
17 #endif
18
19 #ifndef DBAPI2_RESULT_HANDLE
20 #define DBAPI2_RESULT_HANDLE void
21 #endif
22
23 typedef void *DBAPIUserData;
24
25 struct DBAPIResult;
26
27 typedef DBAPI2_HANDLE *(*DBAPINew)(struct DBAPIConn *);
28 typedef void (*DBAPIClose)(struct DBAPIConn *);
29
30 typedef void (*DBAPIQueryCallback)(struct DBAPIResult *, void *);
31
32 typedef void (*DBAPIQuery)(struct DBAPIConn *, DBAPIQueryCallback, DBAPIUserData, const char *, ...) __attribute__ ((format (printf, 4, 5)));
33 typedef void (*DBAPISimpleQuery)(struct DBAPIConn *, const char *, ...) __attribute__ ((format (printf, 2, 3)));
34 typedef void (*DBAPIQueryV)(struct DBAPIConn *, DBAPIQueryCallback, DBAPIUserData, const char *, va_list);
35 typedef void (*DBAPICreateTable)(struct DBAPIConn *, DBAPIQueryCallback, DBAPIUserData, const char *, ...) __attribute__ ((format (printf, 4, 5)));
36 typedef void (*DBAPILoadTable)(struct DBAPIConn *, DBAPIQueryCallback, DBAPIQueryCallback, DBAPIQueryCallback, DBAPIUserData, const char *);
37
38 typedef void (*DBAPISafeQuery)(struct DBAPIConn *, DBAPIQueryCallback, DBAPIUserData, const char *, const char *, ...);
39 typedef void (*DBAPISafeQueryV)(struct DBAPIConn *, DBAPIQueryCallback, DBAPIUserData, const char *, const char *, va_list);
40 typedef void (*DBAPISafeSimpleQuery)(struct DBAPIConn *, const char *, const char *, ...);
41 typedef void (*DBAPISafeCreateTable)(struct DBAPIConn *, const char *, ...) __attribute__ ((format (printf, 2, 3)));
42
43 typedef void (*DBAPIEscapeString)(struct DBAPIConn *, char *, const char *, size_t);
44 typedef int (*DBAPIQuoteString)(struct DBAPIConn *, char *, size_t, const char *, size_t);
45
46 struct DBAPIProviderData;
47
48 typedef struct DBAPIProvider {
49 DBAPINew new;
50 DBAPIClose close;
51
52 DBAPIQueryV query;
53 DBAPICreateTable createtable;
54 DBAPILoadTable loadtable;
55 /*
56 DBAPISafeQuery safequery;
57 DBAPISafeSimpleQuery safesimplequery;
58 DBAPISafeCreateTable safecreatetable;
59 */
60
61 DBAPIEscapeString escapestring;
62 DBAPIQuoteString quotestring;
63
64 /* private members */
65 struct DBAPIProviderData *__providerdata;
66 } DBAPIProvider;
67
68 typedef struct DBAPIConn {
69 DBAPIClose close;
70
71 DBAPIQuery query;
72 DBAPISimpleQuery squery;
73 DBAPICreateTable createtable;
74 DBAPILoadTable loadtable;
75 DBAPIEscapeString escapestring; /* deprecated */
76
77 char name[DBNAME_LEN+1];
78
79 void *handle;
80
81 /* private members */
82 DBAPIClose __close;
83 DBAPIQuoteString __quotestring;
84 DBAPIQueryV __query;
85 } DBAPIConn;
86
87 typedef char *(*DBAPIResultGet)(struct DBAPIResult *, int);
88 typedef int (*DBAPIResultNext)(struct DBAPIResult *);
89 typedef void (*DBAPIResultClear)(struct DBAPIResult *);
90
91 typedef struct DBAPIResult {
92 DBAPI2_RESULT_HANDLE *handle;
93
94 unsigned short success, fields;
95
96 DBAPIResultGet get;
97 DBAPIResultNext next;
98 DBAPIResultClear clear;
99 } DBAPIResult;
100
101 int registerdbprovider(const char *, DBAPIProvider *);
102 void deregisterdbprovider(int);
103 DBAPIConn *dbapi2open(const char *, const char *);
104
105 void dbsnprintf(DBAPIConn *, char *, size_t, const char *, const char *, ...);
106
107 #endif