summaryrefslogtreecommitdiff
path: root/ext/interbase/php_ibase_includes.h
diff options
context:
space:
mode:
Diffstat (limited to 'ext/interbase/php_ibase_includes.h')
-rwxr-xr-xext/interbase/php_ibase_includes.h200
1 files changed, 200 insertions, 0 deletions
diff --git a/ext/interbase/php_ibase_includes.h b/ext/interbase/php_ibase_includes.h
new file mode 100755
index 000000000..15ade040b
--- /dev/null
+++ b/ext/interbase/php_ibase_includes.h
@@ -0,0 +1,200 @@
+/*
+ +----------------------------------------------------------------------+
+ | 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. |
+ +----------------------------------------------------------------------+
+ | Authors: Jouni Ahto <jouni.ahto@exdec.fi> |
+ | Andrew Avdeev <andy@simgts.mv.ru> |
+ | Ard Biesheuvel <a.k.biesheuvel@ewi.tudelft.nl> |
+ +----------------------------------------------------------------------+
+ */
+
+/* $Id: php_ibase_includes.h,v 1.15 2004/07/06 13:46:19 abies Exp $ */
+
+#ifndef PHP_IBASE_INCLUDES_H
+#define PHP_IBASE_INCLUDES_H
+
+#include <ibase.h>
+
+#ifndef SQLDA_CURRENT_VERSION
+#define SQLDA_CURRENT_VERSION SQLDA_VERSION1
+#endif
+
+#ifndef METADATALENGTH
+#define METADATALENGTH 32
+#endif
+
+#define RESET_ERRMSG do { IBG(errmsg)[0] = '\0'; IBG(sql_code) = 0; } while (0)
+
+#define IB_STATUS (IBG(status))
+
+#ifdef ZEND_DEBUG_
+#define IBDEBUG(a) php_printf("::: %s (%d)\n", a, __LINE__);
+#endif
+
+#ifndef IBDEBUG
+#define IBDEBUG(a)
+#endif
+
+extern int le_link, le_plink, le_trans;
+
+#define LE_LINK "Firebird/InterBase link"
+#define LE_PLINK "Firebird/InterBase persistent link"
+#define LE_TRANS "Firebird/InterBase transaction"
+
+#define IBASE_MSGSIZE 256
+#define MAX_ERRMSG (IBASE_MSGSIZE*2)
+
+#define IB_DEF_DATE_FMT "%Y-%m-%d"
+#define IB_DEF_TIME_FMT "%H:%M:%S"
+
+/* this value should never be > USHRT_MAX */
+#define IBASE_BLOB_SEG 4096
+
+ZEND_BEGIN_MODULE_GLOBALS(ibase)
+ ISC_STATUS status[20];
+ long default_link;
+ long num_links, num_persistent;
+ char errmsg[MAX_ERRMSG];
+ long sql_code;
+ZEND_END_MODULE_GLOBALS(ibase)
+
+ZEND_EXTERN_MODULE_GLOBALS(ibase)
+
+typedef struct {
+ isc_db_handle handle;
+ struct tr_list *tr_list;
+ unsigned short dialect;
+ struct event *event_head;
+} ibase_db_link;
+
+typedef struct {
+ isc_tr_handle handle;
+ unsigned short link_cnt;
+ unsigned long affected_rows;
+ ibase_db_link *db_link[1]; /* last member */
+} ibase_trans;
+
+typedef struct tr_list {
+ ibase_trans *trans;
+ struct tr_list *next;
+} ibase_tr_list;
+
+typedef struct {
+ isc_blob_handle bl_handle;
+ unsigned short type;
+ ISC_QUAD bl_qd;
+} ibase_blob;
+
+typedef struct event {
+ ibase_db_link *link;
+ long link_res_id;
+ ISC_LONG event_id;
+ unsigned short event_count;
+ char **events;
+ char *event_buffer, *result_buffer;
+ zval *callback;
+ void **thread_ctx;
+ struct event *event_next;
+ enum event_state { NEW, ACTIVE, DEAD } state;
+} ibase_event;
+
+enum php_interbase_option {
+ PHP_IBASE_DEFAULT = 0,
+ PHP_IBASE_CREATE = 0,
+ /* fetch flags */
+ PHP_IBASE_FETCH_BLOBS = 1,
+ PHP_IBASE_FETCH_ARRAYS = 2,
+ PHP_IBASE_UNIXTIME = 4,
+ /* transaction access mode */
+ PHP_IBASE_WRITE = 1,
+ PHP_IBASE_READ = 2,
+ /* transaction isolation level */
+ PHP_IBASE_CONCURRENCY = 4,
+ PHP_IBASE_COMMITTED = 8,
+ PHP_IBASE_REC_NO_VERSION = 32,
+ PHP_IBASE_REC_VERSION = 64,
+ PHP_IBASE_CONSISTENCY = 16,
+ /* transaction lock resolution */
+ PHP_IBASE_WAIT = 128,
+ PHP_IBASE_NOWAIT = 256
+};
+
+#ifdef ZTS
+#define IBG(v) TSRMG(ibase_globals_id, zend_ibase_globals *, v)
+#else
+#define IBG(v) (ibase_globals.v)
+#endif
+
+#define BLOB_ID_LEN 18
+#define BLOB_ID_MASK "0x%" LL_MASK "x"
+
+#define BLOB_INPUT 1
+#define BLOB_OUTPUT 2
+
+#ifdef PHP_WIN32
+#define LL_MASK "I64"
+#define LL_LIT(lit) lit ## I64
+typedef void (__stdcall *info_func_t)(char*);
+#else
+#define LL_MASK "ll"
+#define LL_LIT(lit) lit ## ll
+typedef void (*info_func_t)(char*);
+#endif
+
+void _php_ibase_error(TSRMLS_D);
+void _php_ibase_module_error(char * TSRMLS_DC, ...)
+ PHP_ATTRIBUTE_FORMAT(printf,1,PHP_ATTR_FMT_OFFSET +2);
+
+/* determine if a resource is a link or transaction handle */
+#define PHP_IBASE_LINK_TRANS(pzval, lh, th) \
+ do { if (!pzval) { \
+ ZEND_FETCH_RESOURCE2(lh, ibase_db_link *, NULL, IBG(default_link), \
+ "InterBase link", le_link, le_plink) } \
+ else \
+ _php_ibase_get_link_trans(INTERNAL_FUNCTION_PARAM_PASSTHRU, &pzval, &lh, &th); \
+ if (SUCCESS != _php_ibase_def_trans(lh, &th TSRMLS_CC)) { RETURN_FALSE; } \
+ } while (0)
+
+int _php_ibase_def_trans(ibase_db_link *ib_link, ibase_trans **trans TSRMLS_DC);
+void _php_ibase_get_link_trans(INTERNAL_FUNCTION_PARAMETERS, zval **link_id,
+ ibase_db_link **ib_link, ibase_trans **trans);
+
+/* provided by ibase_query.c */
+void php_ibase_query_minit(INIT_FUNC_ARGS);
+
+/* provided by ibase_blobs.c */
+void php_ibase_blobs_minit(INIT_FUNC_ARGS);
+int _php_ibase_string_to_quad(char const *id, ISC_QUAD *qd);
+char *_php_ibase_quad_to_string(ISC_QUAD const qd);
+int _php_ibase_blob_get(zval *return_value, ibase_blob *ib_blob, unsigned long max_len TSRMLS_DC);
+int _php_ibase_blob_add(zval **string_arg, ibase_blob *ib_blob TSRMLS_DC);
+
+/* provided by ibase_events.c */
+void php_ibase_events_minit(INIT_FUNC_ARGS);
+void _php_ibase_free_event(ibase_event *event TSRMLS_DC);
+
+/* provided by ibase_service.c */
+void php_ibase_service_minit(INIT_FUNC_ARGS);
+
+#ifndef max
+#define max(a,b) ((a)>(b)?(a):(b))
+#endif
+
+#endif /* PHP_IBASE_INCLUDES_H */
+
+/*
+ * Local variables:
+ * tab-width: 4
+ * c-basic-offset: 4
+ * End:
+ */