Annotation of embedaddon/php/ext/dba/php_dba.h, revision 1.1.1.3
1.1 misho 1: /*
2: +----------------------------------------------------------------------+
3: | PHP Version 5 |
4: +----------------------------------------------------------------------+
1.1.1.3 ! misho 5: | Copyright (c) 1997-2013 The PHP Group |
1.1 misho 6: +----------------------------------------------------------------------+
7: | This source file is subject to version 3.01 of the PHP license, |
8: | that is bundled with this package in the file LICENSE, and is |
9: | available through the world-wide-web at the following url: |
10: | http://www.php.net/license/3_01.txt |
11: | If you did not receive a copy of the PHP license and are unable to |
12: | obtain it through the world-wide-web, please send a note to |
13: | license@php.net so we can mail you a copy immediately. |
14: +----------------------------------------------------------------------+
15: | Author: Sascha Schumann <sascha@schumann.cx> |
16: +----------------------------------------------------------------------+
17: */
18:
1.1.1.2 misho 19: /* $Id$ */
1.1 misho 20:
21: #ifndef PHP_DBA_H
22: #define PHP_DBA_H
23:
24: #if HAVE_DBA
25:
26: typedef enum {
27: /* do not allow 0 here */
28: DBA_READER = 1,
29: DBA_WRITER,
30: DBA_TRUNC,
31: DBA_CREAT
32: } dba_mode_t;
33:
34: typedef struct dba_lock {
35: php_stream *fp;
36: char *name;
37: int mode; /* LOCK_EX,LOCK_SH */
38: } dba_lock;
39:
40: typedef struct dba_info {
41: /* public */
42: void *dbf; /* ptr to private data or whatever */
43: char *path;
44: dba_mode_t mode;
45: php_stream *fp; /* this is the database stream for builtin handlers */
46: int fd;
47: /* arg[cv] are only available when the dba_open handler is called! */
48: int argc;
49: zval ***argv;
50: /* private */
51: int flags; /* whether and how dba did locking and other flags*/
52: struct dba_handler *hnd;
53: dba_lock lock;
54: } dba_info;
55:
56: #define DBA_LOCK_READER (0x0001)
57: #define DBA_LOCK_WRITER (0x0002)
58: #define DBA_LOCK_CREAT (0x0004)
59: #define DBA_LOCK_TRUNC (0x0008)
60:
61: #define DBA_LOCK_EXT (0)
62: #define DBA_LOCK_ALL (DBA_LOCK_READER|DBA_LOCK_WRITER|DBA_LOCK_CREAT|DBA_LOCK_TRUNC)
63: #define DBA_LOCK_WCT (DBA_LOCK_WRITER|DBA_LOCK_CREAT|DBA_LOCK_TRUNC)
64:
65: #define DBA_STREAM_OPEN (0x0010)
66: #define DBA_PERSISTENT (0x0020)
67:
68: #define DBA_CAST_AS_FD (0x0050)
69: #define DBA_NO_APPEND (0x00D0)
70:
71: extern zend_module_entry dba_module_entry;
72: #define dba_module_ptr &dba_module_entry
73:
74: typedef struct dba_handler {
75: char *name; /* handler name */
76: int flags; /* whether and how dba does locking and other flags*/
77: int (*open)(dba_info *, char **error TSRMLS_DC);
78: void (*close)(dba_info * TSRMLS_DC);
79: char* (*fetch)(dba_info *, char *, int, int, int * TSRMLS_DC);
80: int (*update)(dba_info *, char *, int, char *, int, int TSRMLS_DC);
81: int (*exists)(dba_info *, char *, int TSRMLS_DC);
82: int (*delete)(dba_info *, char *, int TSRMLS_DC);
83: char* (*firstkey)(dba_info *, int * TSRMLS_DC);
84: char* (*nextkey)(dba_info *, int * TSRMLS_DC);
85: int (*optimize)(dba_info * TSRMLS_DC);
86: int (*sync)(dba_info * TSRMLS_DC);
87: char* (*info)(struct dba_handler *hnd, dba_info * TSRMLS_DC);
88: /* dba_info==NULL: Handler info, dba_info!=NULL: Database info */
89: } dba_handler;
90:
91: /* common prototypes which must be supplied by modules */
92:
93: #define DBA_OPEN_FUNC(x) \
94: int dba_open_##x(dba_info *info, char **error TSRMLS_DC)
95: #define DBA_CLOSE_FUNC(x) \
96: void dba_close_##x(dba_info *info TSRMLS_DC)
97: #define DBA_FETCH_FUNC(x) \
98: char *dba_fetch_##x(dba_info *info, char *key, int keylen, int skip, int *newlen TSRMLS_DC)
99: #define DBA_UPDATE_FUNC(x) \
100: int dba_update_##x(dba_info *info, char *key, int keylen, char *val, int vallen, int mode TSRMLS_DC)
101: #define DBA_EXISTS_FUNC(x) \
102: int dba_exists_##x(dba_info *info, char *key, int keylen TSRMLS_DC)
103: #define DBA_DELETE_FUNC(x) \
104: int dba_delete_##x(dba_info *info, char *key, int keylen TSRMLS_DC)
105: #define DBA_FIRSTKEY_FUNC(x) \
106: char *dba_firstkey_##x(dba_info *info, int *newlen TSRMLS_DC)
107: #define DBA_NEXTKEY_FUNC(x) \
108: char *dba_nextkey_##x(dba_info *info, int *newlen TSRMLS_DC)
109: #define DBA_OPTIMIZE_FUNC(x) \
110: int dba_optimize_##x(dba_info *info TSRMLS_DC)
111: #define DBA_SYNC_FUNC(x) \
112: int dba_sync_##x(dba_info *info TSRMLS_DC)
113: #define DBA_INFO_FUNC(x) \
114: char *dba_info_##x(dba_handler *hnd, dba_info *info TSRMLS_DC)
115:
116: #define DBA_FUNCS(x) \
117: DBA_OPEN_FUNC(x); \
118: DBA_CLOSE_FUNC(x); \
119: DBA_FETCH_FUNC(x); \
120: DBA_UPDATE_FUNC(x); \
121: DBA_DELETE_FUNC(x); \
122: DBA_EXISTS_FUNC(x); \
123: DBA_FIRSTKEY_FUNC(x); \
124: DBA_NEXTKEY_FUNC(x); \
125: DBA_OPTIMIZE_FUNC(x); \
126: DBA_SYNC_FUNC(x); \
127: DBA_INFO_FUNC(x)
128:
129: #define VALLEN(p) Z_STRVAL_PP(p), Z_STRLEN_PP(p)
130:
131: PHP_FUNCTION(dba_open);
132: PHP_FUNCTION(dba_popen);
133: PHP_FUNCTION(dba_close);
134: PHP_FUNCTION(dba_firstkey);
135: PHP_FUNCTION(dba_nextkey);
136: PHP_FUNCTION(dba_replace);
137: PHP_FUNCTION(dba_insert);
138: PHP_FUNCTION(dba_delete);
139: PHP_FUNCTION(dba_exists);
140: PHP_FUNCTION(dba_fetch);
141: PHP_FUNCTION(dba_optimize);
142: PHP_FUNCTION(dba_sync);
143: PHP_FUNCTION(dba_handlers);
144: PHP_FUNCTION(dba_list);
145: PHP_FUNCTION(dba_key_split);
146:
147: #else
148: #define dba_module_ptr NULL
149: #endif
150:
151: #define phpext_dba_ptr dba_module_ptr
152:
153: #endif
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>