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