Back to index

php5  5.3.10
spl_functions.h
Go to the documentation of this file.
00001 /*
00002    +----------------------------------------------------------------------+
00003    | PHP Version 5                                                        |
00004    +----------------------------------------------------------------------+
00005    | Copyright (c) 1997-2012 The PHP Group                                |
00006    +----------------------------------------------------------------------+
00007    | This source file is subject to version 3.01 of the PHP license,      |
00008    | that is bundled with this package in the file LICENSE, and is        |
00009    | available through the world-wide-web at the following url:           |
00010    | http://www.php.net/license/3_01.txt                                  |
00011    | If you did not receive a copy of the PHP license and are unable to   |
00012    | obtain it through the world-wide-web, please send a note to          |
00013    | license@php.net so we can mail you a copy immediately.               |
00014    +----------------------------------------------------------------------+
00015    | Authors: Marcus Boerger <helly@php.net>                              |
00016    +----------------------------------------------------------------------+
00017  */
00018 
00019 /* $Id: spl_functions.h 321634 2012-01-01 13:15:04Z felipe $ */
00020 
00021 #ifndef PHP_FUNCTIONS_H
00022 #define PHP_FUNCTIONS_H
00023 
00024 #include "php.h"
00025 
00026 typedef zend_object_value (*create_object_func_t)(zend_class_entry *class_type TSRMLS_DC);
00027 
00028 #define REGISTER_SPL_STD_CLASS(class_name, obj_ctor) \
00029        spl_register_std_class(&spl_ce_ ## class_name, # class_name, obj_ctor, NULL TSRMLS_CC);
00030 
00031 #define REGISTER_SPL_STD_CLASS_EX(class_name, obj_ctor, funcs) \
00032        spl_register_std_class(&spl_ce_ ## class_name, # class_name, obj_ctor, funcs TSRMLS_CC);
00033 
00034 #define REGISTER_SPL_SUB_CLASS_EX(class_name, parent_class_name, obj_ctor, funcs) \
00035        spl_register_sub_class(&spl_ce_ ## class_name, spl_ce_ ## parent_class_name, # class_name, obj_ctor, funcs TSRMLS_CC);
00036 
00037 #define REGISTER_SPL_INTERFACE(class_name) \
00038        spl_register_interface(&spl_ce_ ## class_name, # class_name, spl_funcs_ ## class_name TSRMLS_CC);
00039 
00040 #define REGISTER_SPL_IMPLEMENTS(class_name, interface_name) \
00041        zend_class_implements(spl_ce_ ## class_name TSRMLS_CC, 1, spl_ce_ ## interface_name);
00042 
00043 #define REGISTER_SPL_ITERATOR(class_name) \
00044        zend_class_implements(spl_ce_ ## class_name TSRMLS_CC, 1, zend_ce_iterator);
00045 
00046 #define REGISTER_SPL_PROPERTY(class_name, prop_name, prop_flags) \
00047        spl_register_property(spl_ce_ ## class_name, prop_name, sizeof(prop_name)-1, prop_flags TSRMLS_CC);
00048 
00049 #define REGISTER_SPL_CLASS_CONST_LONG(class_name, const_name, value) \
00050        zend_declare_class_constant_long(spl_ce_ ## class_name, const_name, sizeof(const_name)-1, (long)value TSRMLS_CC);
00051 
00052 void spl_register_std_class(zend_class_entry ** ppce, char * class_name, create_object_func_t ctor, const zend_function_entry * function_list TSRMLS_DC);
00053 void spl_register_sub_class(zend_class_entry ** ppce, zend_class_entry * parent_ce, char * class_name, create_object_func_t ctor, const zend_function_entry * function_list TSRMLS_DC);
00054 void spl_register_interface(zend_class_entry ** ppce, char * class_name, const zend_function_entry *functions TSRMLS_DC);
00055 
00056 void spl_register_property( zend_class_entry * class_entry, char *prop_name, int prop_name_len, int prop_flags TSRMLS_DC);
00057 
00058 /* sub: whether to allow subclasses/interfaces
00059    allow = 0: allow all classes and interfaces
00060    allow > 0: allow all that match and mask ce_flags
00061    allow < 0: disallow all that match and mask ce_flags
00062  */
00063 void spl_add_class_name(zval * list, zend_class_entry * pce, int allow, int ce_flags TSRMLS_DC);
00064 void spl_add_interfaces(zval * list, zend_class_entry * pce, int allow, int ce_flags TSRMLS_DC);
00065 int spl_add_classes(zend_class_entry *pce, zval *list, int sub, int allow, int ce_flags TSRMLS_DC);
00066 
00067 /* caller must efree(return) */
00068 char * spl_gen_private_prop_name(zend_class_entry *ce, char *prop_name, int prop_len, int *name_len TSRMLS_DC);
00069 
00070 #define SPL_ME(class_name, function_name, arg_info, flags) \
00071        PHP_ME( spl_ ## class_name, function_name, arg_info, flags)
00072        
00073 #define SPL_ABSTRACT_ME(class_name, function_name, arg_info) \
00074        ZEND_ABSTRACT_ME( spl_ ## class_name, function_name, arg_info)
00075 
00076 #define SPL_METHOD(class_name, function_name) \
00077        PHP_METHOD(spl_ ## class_name, function_name)
00078 
00079 #define SPL_MA(class_name, function_name, alias_class, alias_function, arg_info, flags) \
00080        PHP_MALIAS(spl_ ## alias_class, function_name, alias_function, arg_info, flags)
00081 #endif /* PHP_FUNCTIONS_H */
00082 
00083 /*
00084  * Local Variables:
00085  * c-basic-offset: 4
00086  * tab-width: 4
00087  * End:
00088  * vim600: fdm=marker
00089  * vim: noet sw=4 ts=4
00090  */