summaryrefslogtreecommitdiff
path: root/Zend/zend_extensions.h
diff options
context:
space:
mode:
Diffstat (limited to 'Zend/zend_extensions.h')
-rw-r--r--Zend/zend_extensions.h133
1 files changed, 133 insertions, 0 deletions
diff --git a/Zend/zend_extensions.h b/Zend/zend_extensions.h
new file mode 100644
index 0000000..efab29d
--- /dev/null
+++ b/Zend/zend_extensions.h
@@ -0,0 +1,133 @@
+/*
+ +----------------------------------------------------------------------+
+ | Zend Engine |
+ +----------------------------------------------------------------------+
+ | Copyright (c) 1998-2013 Zend Technologies Ltd. (http://www.zend.com) |
+ +----------------------------------------------------------------------+
+ | This source file is subject to version 2.00 of the Zend 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.zend.com/license/2_00.txt. |
+ | If you did not receive a copy of the Zend license and are unable to |
+ | obtain it through the world-wide-web, please send a note to |
+ | license@zend.com so we can mail you a copy immediately. |
+ +----------------------------------------------------------------------+
+ | Authors: Andi Gutmans <andi@zend.com> |
+ | Zeev Suraski <zeev@zend.com> |
+ +----------------------------------------------------------------------+
+*/
+
+/* $Id$ */
+
+#ifndef ZEND_EXTENSIONS_H
+#define ZEND_EXTENSIONS_H
+
+#include "zend_compile.h"
+#include "zend_build.h"
+
+/* The first number is the engine version and the rest is the date.
+ * This way engine 2/3 API no. is always greater than engine 1 API no..
+ */
+#define ZEND_EXTENSION_API_NO 220100525
+
+typedef struct _zend_extension_version_info {
+ int zend_extension_api_no;
+ char *build_id;
+} zend_extension_version_info;
+
+#define ZEND_EXTENSION_BUILD_ID "API" ZEND_TOSTR(ZEND_EXTENSION_API_NO) ZEND_BUILD_TS ZEND_BUILD_DEBUG ZEND_BUILD_SYSTEM ZEND_BUILD_EXTRA
+
+typedef struct _zend_extension zend_extension;
+
+/* Typedef's for zend_extension function pointers */
+typedef int (*startup_func_t)(zend_extension *extension);
+typedef void (*shutdown_func_t)(zend_extension *extension);
+typedef void (*activate_func_t)(void);
+typedef void (*deactivate_func_t)(void);
+
+typedef void (*message_handler_func_t)(int message, void *arg);
+
+typedef void (*op_array_handler_func_t)(zend_op_array *op_array);
+
+typedef void (*statement_handler_func_t)(zend_op_array *op_array);
+typedef void (*fcall_begin_handler_func_t)(zend_op_array *op_array);
+typedef void (*fcall_end_handler_func_t)(zend_op_array *op_array);
+
+typedef void (*op_array_ctor_func_t)(zend_op_array *op_array);
+typedef void (*op_array_dtor_func_t)(zend_op_array *op_array);
+
+struct _zend_extension {
+ char *name;
+ char *version;
+ char *author;
+ char *URL;
+ char *copyright;
+
+ startup_func_t startup;
+ shutdown_func_t shutdown;
+ activate_func_t activate;
+ deactivate_func_t deactivate;
+
+ message_handler_func_t message_handler;
+
+ op_array_handler_func_t op_array_handler;
+
+ statement_handler_func_t statement_handler;
+ fcall_begin_handler_func_t fcall_begin_handler;
+ fcall_end_handler_func_t fcall_end_handler;
+
+ op_array_ctor_func_t op_array_ctor;
+ op_array_dtor_func_t op_array_dtor;
+
+ int (*api_no_check)(int api_no);
+ int (*build_id_check)(const char* build_id);
+ void *reserved3;
+ void *reserved4;
+ void *reserved5;
+ void *reserved6;
+ void *reserved7;
+ void *reserved8;
+
+ DL_HANDLE handle;
+ int resource_number;
+};
+
+BEGIN_EXTERN_C()
+ZEND_API int zend_get_resource_handle(zend_extension *extension);
+ZEND_API void zend_extension_dispatch_message(int message, void *arg);
+END_EXTERN_C()
+
+#define ZEND_EXTMSG_NEW_EXTENSION 1
+
+
+#define ZEND_EXTENSION() \
+ ZEND_EXT_API zend_extension_version_info extension_version_info = { ZEND_EXTENSION_API_NO, ZEND_EXTENSION_BUILD_ID }
+
+#define STANDARD_ZEND_EXTENSION_PROPERTIES NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, -1
+#define COMPAT_ZEND_EXTENSION_PROPERTIES NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, -1
+#define BUILD_COMPAT_ZEND_EXTENSION_PROPERTIES NULL, NULL, NULL, NULL, NULL, NULL, NULL, -1
+
+
+ZEND_API extern zend_llist zend_extensions;
+
+void zend_extension_dtor(zend_extension *extension);
+void zend_append_version_info(const zend_extension *extension);
+int zend_startup_extensions_mechanism(void);
+int zend_startup_extensions(void);
+void zend_shutdown_extensions(TSRMLS_D);
+
+BEGIN_EXTERN_C()
+ZEND_API int zend_load_extension(const char *path);
+ZEND_API int zend_register_extension(zend_extension *new_extension, DL_HANDLE handle);
+ZEND_API zend_extension *zend_get_extension(const char *extension_name);
+END_EXTERN_C()
+
+#endif /* ZEND_EXTENSIONS_H */
+
+/*
+ * Local variables:
+ * tab-width: 4
+ * c-basic-offset: 4
+ * indent-tabs-mode: t
+ * End:
+ */