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>