onphp.h

Go to the documentation of this file.
00001 /***************************************************************************
00002  *   Copyright (C) 2006-2007 by Konstantin V. Arkhipov                     *
00003  *                                                                         *
00004  *   This program is free software; you can redistribute it and/or modify  *
00005  *   it under the terms of the GNU Lesser General Public License as        *
00006  *   published by the Free Software Foundation; either version 3 of the    *
00007  *   License, or (at your option) any later version.                       *
00008  *                                                                         *
00009  ***************************************************************************/
00010 /* $Id: onphp.h 4687 2007-12-09 18:57:18Z voxus $ */
00011 
00012 #ifndef ONPHP_H
00013 #define ONPHP_H
00014 
00015 #include "php.h"
00016 #include "zend_interfaces.h"
00017 
00018 #define ONPHP_VERSION "0.10.8"
00019 #define ONPHP_MODULE_NAME "onPHP"
00020 
00021 #define ZVAL_FREE(z) zval_dtor(z); FREE_ZVAL(z);
00022 
00023 #define ONPHP_ME(class_name, function_name, arg_info, flags) \
00024     PHP_ME(onphp_ ## class_name, function_name, arg_info, flags)
00025 
00026 #define ONPHP_ABSTRACT_ME(class_name, function_name, arg_info, flags) \
00027     ZEND_FENTRY(function_name, NULL, arg_info, flags|ZEND_ACC_ABSTRACT)
00028 
00029 #define REGISTER_ONPHP_INTERFACE(class_name) \
00030     spl_register_interface(&onphp_ce_ ## class_name, # class_name, onphp_funcs_ ## class_name TSRMLS_CC);
00031 
00032 #define REGISTER_ONPHP_IMPLEMENTS(class_name, interface_name) \
00033     zend_class_implements(onphp_ce_ ## class_name TSRMLS_CC, 1, onphp_ce_ ## interface_name);
00034 
00035 #define REGISTER_ONPHP_STD_CLASS(class_name, obj_ctor) \
00036     spl_register_std_class(&onphp_ce_ ## class_name, # class_name, obj_ctor, NULL TSRMLS_CC);
00037 
00038 #define REGISTER_ONPHP_STD_CLASS_EX(class_name) \
00039     spl_register_std_class(&onphp_ce_ ## class_name, # class_name, onphp_empty_object_new, onphp_funcs_ ## class_name TSRMLS_CC);
00040 
00041 #define REGISTER_ONPHP_SUB_CLASS_EX(class_name, parent_class_name) \
00042     spl_register_sub_class(&onphp_ce_ ## class_name, onphp_ce_ ## parent_class_name, # class_name, onphp_empty_object_new, onphp_funcs_ ## class_name TSRMLS_CC);
00043 
00044 #define REGISTER_ONPHP_CUSTOM_SUB_CLASS_EX(class_name, parent_class_name, obj_ctor, funcs) \
00045     spl_register_sub_class(&onphp_ce_ ## class_name, onphp_ce_ ## parent_class_name, # class_name, obj_ctor, funcs TSRMLS_CC);
00046 
00047 #define REGISTER_ONPHP_PROPERTY(class_name, prop_name, prop_flags) \
00048     zend_declare_property_null(onphp_ce_ ## class_name, prop_name, strlen(prop_name), prop_flags TSRMLS_CC);
00049 
00050 #define REGISTER_ONPHP_PROPERTY_BOOL(class_name, prop_name, bool, prop_flags) \
00051     zend_declare_property_bool(onphp_ce_ ## class_name, prop_name, strlen(prop_name), bool, prop_flags TSRMLS_CC);
00052 
00053 #define REGISTER_ONPHP_CLASS_CONST_LONG(class_name, const_name, value) \
00054     zend_declare_class_constant_long(onphp_ce_ ## class_name, const_name, strlen(const_name), (long) value TSRMLS_CC);
00055 
00056 #define ONPHP_READ_PROPERTY(class, property) \
00057     zend_read_property(Z_OBJCE_P(class), class, property, strlen(property), 1 TSRMLS_CC)
00058 
00059 #define ONPHP_UPDATE_PROPERTY(class, property, value) \
00060     zend_update_property(Z_OBJCE_P(class), class, property, strlen(property), value TSRMLS_CC)
00061 
00062 #define ONPHP_UPDATE_PROPERTY_BOOL(class, property, value) \
00063     zend_update_property_bool(Z_OBJCE_P(class), class, property, strlen(property), value TSRMLS_CC)
00064 
00065 #define ONPHP_UPDATE_PROPERTY_LONG(class, property, value) \
00066     zend_update_property_long(Z_OBJCE_P(class), class, property, strlen(property), value TSRMLS_CC)
00067 
00068 #define ONPHP_METHOD(class_name, function_name) \
00069     PHP_METHOD(onphp_ ## class_name, function_name)
00070 
00071 #define ONPHP_ARGINFO_ONE \
00072     ZEND_BEGIN_ARG_INFO(arginfo_one, 0) \
00073         ZEND_ARG_INFO(0, first) \
00074     ZEND_END_ARG_INFO()
00075 
00076 #define ONPHP_ARGINFO_ONE_REF \
00077     ZEND_BEGIN_ARG_INFO(arginfo_one_ref, 0) \
00078         ZEND_ARG_INFO(1, value) \
00079     ZEND_END_ARG_INFO() \
00080 
00081 #define ONPHP_ARGINFO_TWO \
00082     ZEND_BEGIN_ARG_INFO(arginfo_two, 0) \
00083         ZEND_ARG_INFO(0, first) \
00084         ZEND_ARG_INFO(0, second) \
00085     ZEND_END_ARG_INFO()
00086 
00087 #define ONPHP_ARGINFO_THREE \
00088     ZEND_BEGIN_ARG_INFO(arginfo_three, 0) \
00089         ZEND_ARG_INFO(0, first) \
00090         ZEND_ARG_INFO(0, second) \
00091         ZEND_ARG_INFO(0, third) \
00092     ZEND_END_ARG_INFO()
00093 
00094 #define onphp_empty_object zend_object
00095 
00096 extern void onphp_empty_object_free_storage(void *object TSRMLS_DC);
00097 extern zend_object_value onphp_empty_object_spawn(
00098     zend_class_entry *class_type,
00099     onphp_empty_object **object TSRMLS_DC
00100 );
00101 extern zend_object_value onphp_empty_object_new(
00102     zend_class_entry *class_type TSRMLS_DC
00103 );
00104 
00105 #endif /* ONPHP_H */

Generated on Sun Dec 9 21:56:23 2007 for onPHP by  doxygen 1.5.4