diff options
Diffstat (limited to 'ext/dba/php_dba.h')
-rw-r--r-- | ext/dba/php_dba.h | 153 |
1 files changed, 153 insertions, 0 deletions
diff --git a/ext/dba/php_dba.h b/ext/dba/php_dba.h new file mode 100644 index 000000000..7fd8b0e36 --- /dev/null +++ b/ext/dba/php_dba.h @@ -0,0 +1,153 @@ +/* + +----------------------------------------------------------------------+ + | PHP Version 5 | + +----------------------------------------------------------------------+ + | Copyright (c) 1997-2004 The PHP Group | + +----------------------------------------------------------------------+ + | This source file is subject to version 3.0 of the PHP license, | + | that is bundled with this package in the file LICENSE, and is | + | available through the world-wide-web at the following url: | + | http://www.php.net/license/3_0.txt. | + | If you did not receive a copy of the PHP license and are unable to | + | obtain it through the world-wide-web, please send a note to | + | license@php.net so we can mail you a copy immediately. | + +----------------------------------------------------------------------+ + | Author: Sascha Schumann <sascha@schumann.cx> | + +----------------------------------------------------------------------+ + */ + +/* $Id: php_dba.h,v 1.28 2004/01/08 17:31:55 sniper Exp $ */ + +#ifndef PHP_DBA_H +#define PHP_DBA_H + +#if HAVE_DBA + +typedef enum { + /* do not allow 0 here */ + DBA_READER = 1, + DBA_WRITER, + DBA_TRUNC, + DBA_CREAT +} dba_mode_t; + +typedef struct dba_lock { + php_stream *fp; + char *name; + int mode; /* LOCK_EX,LOCK_SH */ +} dba_lock; + +typedef struct dba_info { + /* public */ + void *dbf; /* ptr to private data or whatever */ + char *path; + dba_mode_t mode; + php_stream *fp; /* this is the database stream for builtin handlers */ + int fd; + /* arg[cv] are only available when the dba_open handler is called! */ + int argc; + zval ***argv; + /* private */ + int flags; /* whether and how dba did locking and other flags*/ + struct dba_handler *hnd; + dba_lock lock; +} dba_info; + +#define DBA_LOCK_READER (0x0001) +#define DBA_LOCK_WRITER (0x0002) +#define DBA_LOCK_CREAT (0x0004) +#define DBA_LOCK_TRUNC (0x0008) + +#define DBA_LOCK_EXT (0) +#define DBA_LOCK_ALL (DBA_LOCK_READER|DBA_LOCK_WRITER|DBA_LOCK_CREAT|DBA_LOCK_TRUNC) +#define DBA_LOCK_WCT (DBA_LOCK_WRITER|DBA_LOCK_CREAT|DBA_LOCK_TRUNC) + +#define DBA_STREAM_OPEN (0x0010) +#define DBA_PERSISTENT (0x0020) + +#define DBA_CAST_AS_FD (0x0050) +#define DBA_NO_APPEND (0x00D0) + +extern zend_module_entry dba_module_entry; +#define dba_module_ptr &dba_module_entry + +typedef struct dba_handler { + char *name; /* handler name */ + int flags; /* whether and how dba does locking and other flags*/ + int (*open)(dba_info *, char **error TSRMLS_DC); + void (*close)(dba_info * TSRMLS_DC); + char* (*fetch)(dba_info *, char *, int, int, int * TSRMLS_DC); + int (*update)(dba_info *, char *, int, char *, int, int TSRMLS_DC); + int (*exists)(dba_info *, char *, int TSRMLS_DC); + int (*delete)(dba_info *, char *, int TSRMLS_DC); + char* (*firstkey)(dba_info *, int * TSRMLS_DC); + char* (*nextkey)(dba_info *, int * TSRMLS_DC); + int (*optimize)(dba_info * TSRMLS_DC); + int (*sync)(dba_info * TSRMLS_DC); + char* (*info)(struct dba_handler *hnd, dba_info * TSRMLS_DC); + /* dba_info==NULL: Handler info, dba_info!=NULL: Database info */ +} dba_handler; + +/* common prototypes which must be supplied by modules */ + +#define DBA_OPEN_FUNC(x) \ + int dba_open_##x(dba_info *info, char **error TSRMLS_DC) +#define DBA_CLOSE_FUNC(x) \ + void dba_close_##x(dba_info *info TSRMLS_DC) +#define DBA_FETCH_FUNC(x) \ + char *dba_fetch_##x(dba_info *info, char *key, int keylen, int skip, int *newlen TSRMLS_DC) +#define DBA_UPDATE_FUNC(x) \ + int dba_update_##x(dba_info *info, char *key, int keylen, char *val, int vallen, int mode TSRMLS_DC) +#define DBA_EXISTS_FUNC(x) \ + int dba_exists_##x(dba_info *info, char *key, int keylen TSRMLS_DC) +#define DBA_DELETE_FUNC(x) \ + int dba_delete_##x(dba_info *info, char *key, int keylen TSRMLS_DC) +#define DBA_FIRSTKEY_FUNC(x) \ + char *dba_firstkey_##x(dba_info *info, int *newlen TSRMLS_DC) +#define DBA_NEXTKEY_FUNC(x) \ + char *dba_nextkey_##x(dba_info *info, int *newlen TSRMLS_DC) +#define DBA_OPTIMIZE_FUNC(x) \ + int dba_optimize_##x(dba_info *info TSRMLS_DC) +#define DBA_SYNC_FUNC(x) \ + int dba_sync_##x(dba_info *info TSRMLS_DC) +#define DBA_INFO_FUNC(x) \ + char *dba_info_##x(dba_handler *hnd, dba_info *info TSRMLS_DC) + +#define DBA_FUNCS(x) \ + DBA_OPEN_FUNC(x); \ + DBA_CLOSE_FUNC(x); \ + DBA_FETCH_FUNC(x); \ + DBA_UPDATE_FUNC(x); \ + DBA_DELETE_FUNC(x); \ + DBA_EXISTS_FUNC(x); \ + DBA_FIRSTKEY_FUNC(x); \ + DBA_NEXTKEY_FUNC(x); \ + DBA_OPTIMIZE_FUNC(x); \ + DBA_SYNC_FUNC(x); \ + DBA_INFO_FUNC(x) + +#define VALLEN(p) Z_STRVAL_PP(p), Z_STRLEN_PP(p) + +PHP_FUNCTION(dba_open); +PHP_FUNCTION(dba_popen); +PHP_FUNCTION(dba_close); +PHP_FUNCTION(dba_firstkey); +PHP_FUNCTION(dba_nextkey); +PHP_FUNCTION(dba_replace); +PHP_FUNCTION(dba_insert); +PHP_FUNCTION(dba_delete); +PHP_FUNCTION(dba_exists); +PHP_FUNCTION(dba_fetch); +PHP_FUNCTION(dba_optimize); +PHP_FUNCTION(dba_sync); +PHP_FUNCTION(dba_handlers); +PHP_FUNCTION(dba_list); +PHP_FUNCTION(dba_key_split); + +#else +#define dba_module_ptr NULL +#endif + +#define phpext_dba_ptr dba_module_ptr + +#endif |