Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Newer
Older
100644 596 lines (491 sloc) 31.087 kb
573b460 andigutmans Zend Library
andigutmans authored
1 /*
2 +----------------------------------------------------------------------+
3 | Zend Engine |
4 +----------------------------------------------------------------------+
916815b Bump up the year
foobar authored
5 | Copyright (c) 1998-2005 Zend Technologies Ltd. (http://www.zend.com) |
573b460 andigutmans Zend Library
andigutmans authored
6 +----------------------------------------------------------------------+
d863d52 Update headers.
Sebastian Bergmann authored
7 | This source file is subject to version 2.00 of the Zend license, |
b5b1117 Zeev Suraski License update
zsuraski authored
8 | that is bundled with this package in the file LICENSE, and is |
f68c7ff updating license information in the headers.
James Cox authored
9 | available through the world-wide-web at the following url: |
d863d52 Update headers.
Sebastian Bergmann authored
10 | http://www.zend.com/license/2_00.txt. |
b5b1117 Zeev Suraski License update
zsuraski authored
11 | If you did not receive a copy of the Zend license and are unable to |
12 | obtain it through the world-wide-web, please send a note to |
13 | license@zend.com so we can mail you a copy immediately. |
573b460 andigutmans Zend Library
andigutmans authored
14 +----------------------------------------------------------------------+
15 | Authors: Andi Gutmans <andi@zend.com> |
16 | Zeev Suraski <zeev@zend.com> |
58f8805 Adding new parameter parsing API.
Andrei Zmievski authored
17 | Andrei Zmievski <andrei@php.net> |
573b460 andigutmans Zend Library
andigutmans authored
18 +----------------------------------------------------------------------+
19 */
20
333406b - Added some missing CVS $Id$ tags, headers and footers.
foobar authored
21 /* $Id$ */
b5b1117 Zeev Suraski License update
zsuraski authored
22
b982307 Change header protection macros to conform to standard.
Sascha Schumann authored
23 #ifndef ZEND_API_H
24 #define ZEND_API_H
573b460 andigutmans Zend Library
andigutmans authored
25
7080fa5 andigutmans - Rename modules.h to zend_modules.h
andigutmans authored
26 #include "zend_modules.h"
573b460 andigutmans Zend Library
andigutmans authored
27 #include "zend_list.h"
b7a5b3c Zeev Suraski - Generalize the fast cache mechanism
zsuraski authored
28 #include "zend_fast_cache.h"
5dba477 Zeev Suraski - Some header dependencies cleanup
zsuraski authored
29 #include "zend_operators.h"
30 #include "zend_variables.h"
df74f1d Add optional support for C0x inline semantics.
Sascha Schumann authored
31 #include "zend_execute.h"
573b460 andigutmans Zend Library
andigutmans authored
32
0450ab9 Zeev Suraski MFZE1 (Expose more C++ APIs)
zsuraski authored
33
34 BEGIN_EXTERN_C()
e9d126a andigutmans - Make sure zend_API.h has Zend'ish versions of the ZEND macros so that
andigutmans authored
35
f8bbafd Zeev Suraski ntroduce infrastructure for supplying information about arguments,
zsuraski authored
36 typedef struct _zend_function_entry {
37 char *fname;
38 void (*handler)(INTERNAL_FUNCTION_PARAMETERS);
39 struct _zend_arg_info *arg_info;
40 zend_uint num_args;
41 zend_uint flags;
42 } zend_function_entry;
43
44 #define ZEND_FN(name) zif_##name
45 #define ZEND_NAMED_FUNCTION(name) void name(INTERNAL_FUNCTION_PARAMETERS)
46 #define ZEND_FUNCTION(name) ZEND_NAMED_FUNCTION(ZEND_FN(name))
47 #define ZEND_METHOD(classname, name) ZEND_NAMED_FUNCTION(ZEND_FN(classname##_##name))
48
1c2512d - Add fn_flag ZEND_ACC_ALIAS
Marcus Boerger authored
49 #define ZEND_FENTRY(zend_name, name, arg_info, flags) { #zend_name, name, arg_info, (zend_uint) (sizeof(arg_info)/sizeof(struct _zend_arg_info)-1), flags },
50
51 #define ZEND_NAMED_FE(zend_name, name, arg_info) ZEND_FENTRY(zend_name, name, arg_info, 0)
52 #define ZEND_FE(name, arg_info) ZEND_FENTRY(name, ZEND_FN(name), arg_info, 0)
cec053f Don't identify alias'ed functions
Marcus Boerger authored
53 #define ZEND_FALIAS(name, alias, arg_info) ZEND_FENTRY(name, ZEND_FN(alias), arg_info, 0)
1c2512d - Add fn_flag ZEND_ACC_ALIAS
Marcus Boerger authored
54 #define ZEND_ME(classname, name, arg_info, flags) ZEND_FENTRY(name, ZEND_FN(classname##_##name), arg_info, flags)
55 #define ZEND_ABSTRACT_ME(classname, name, arg_info) ZEND_FENTRY(name, NULL, arg_info, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
33cdc9e Fix order of macro parameter (synch with other macros)
Marcus Boerger authored
56 #define ZEND_MALIAS(classname, name, alias, arg_info, flags) \
c21d597 Add method alias macro
Marcus Boerger authored
57 ZEND_FENTRY(name, ZEND_FN(classname##_##alias), arg_info, flags)
61fc2a9 Add missing macro
Marcus Boerger authored
58 #define ZEND_ME_MAPPING(name, func_name, arg_types) ZEND_NAMED_FE(name, ZEND_FN(func_name), arg_types)
f8bbafd Zeev Suraski ntroduce infrastructure for supplying information about arguments,
zsuraski authored
59
1a72341 Added array type hinting. (This patch requires full re-make)
Dmitry Stogov authored
60 #define ZEND_ARG_INFO(pass_by_ref, name) { #name, sizeof(#name)-1, NULL, 0, 0, 0, pass_by_ref, 0, 0 },
61 #define ZEND_ARG_PASS_INFO(pass_by_ref) { NULL, 0, NULL, 0, 0, 0, pass_by_ref, 0, 0 },
62 #define ZEND_ARG_OBJ_INFO(pass_by_ref, name, classname, allow_null) { #name, sizeof(#name)-1, #classname, sizeof(#classname)-1, 0, allow_null, pass_by_ref, 0, 0 },
63 #define ZEND_ARG_ARRAY_INFO(pass_by_ref, name, allow_null) { #name, sizeof(#name)-1, NULL, 0, 1, allow_null, pass_by_ref, 0, 0 },
7086634 Zeev Suraski - Improve ARG_INFO() macros to support supplying required_num_args
zsuraski authored
64 #define ZEND_BEGIN_ARG_INFO_EX(name, pass_rest_by_reference, return_reference, required_num_args) \
65 zend_arg_info name[] = { \
1a72341 Added array type hinting. (This patch requires full re-make)
Dmitry Stogov authored
66 { NULL, 0, NULL, 0, 0, 0, pass_rest_by_reference, return_reference, required_num_args },
e7e0f7d Zeev Suraski - Check return-by-reference bit when implementing interface prototypes
zsuraski authored
67 #define ZEND_BEGIN_ARG_INFO(name, pass_rest_by_reference) \
aedbdb0 Allowed return by refrence from internal functions
Dmitry Stogov authored
68 ZEND_BEGIN_ARG_INFO_EX(name, pass_rest_by_reference, ZEND_RETURN_VALUE, -1)
f8bbafd Zeev Suraski ntroduce infrastructure for supplying information about arguments,
zsuraski authored
69 #define ZEND_END_ARG_INFO() };
342c6e0 Zeev Suraski Whatnot:
zsuraski authored
70
8b6f848 andigutmans - Merge from Engine 1
andigutmans authored
71 /* Name macros */
72 #define ZEND_MODULE_STARTUP_N(module) zm_startup_##module
73 #define ZEND_MODULE_SHUTDOWN_N(module) zm_shutdown_##module
74 #define ZEND_MODULE_ACTIVATE_N(module) zm_activate_##module
75 #define ZEND_MODULE_DEACTIVATE_N(module) zm_deactivate_##module
6535933 - Replaced the exec_finished hook by the zend_post_deactive hook for
Derick Rethans authored
76 #define ZEND_MODULE_POST_ZEND_DEACTIVATE_N(module) zm_post_zend_deactivate_##module
8b6f848 andigutmans - Merge from Engine 1
andigutmans authored
77 #define ZEND_MODULE_INFO_N(module) zm_info_##module
342c6e0 Zeev Suraski Whatnot:
zsuraski authored
78
8b6f848 andigutmans - Merge from Engine 1
andigutmans authored
79 /* Declaration macros */
80 #define ZEND_MODULE_STARTUP_D(module) int ZEND_MODULE_STARTUP_N(module)(INIT_FUNC_ARGS)
81 #define ZEND_MODULE_SHUTDOWN_D(module) int ZEND_MODULE_SHUTDOWN_N(module)(SHUTDOWN_FUNC_ARGS)
82 #define ZEND_MODULE_ACTIVATE_D(module) int ZEND_MODULE_ACTIVATE_N(module)(INIT_FUNC_ARGS)
83 #define ZEND_MODULE_DEACTIVATE_D(module) int ZEND_MODULE_DEACTIVATE_N(module)(SHUTDOWN_FUNC_ARGS)
6535933 - Replaced the exec_finished hook by the zend_post_deactive hook for
Derick Rethans authored
84 #define ZEND_MODULE_POST_ZEND_DEACTIVATE_D(module) int ZEND_MODULE_POST_ZEND_DEACTIVATE_N(module)(void)
8b6f848 andigutmans - Merge from Engine 1
andigutmans authored
85 #define ZEND_MODULE_INFO_D(module) void ZEND_MODULE_INFO_N(module)(ZEND_MODULE_INFO_FUNC_ARGS)
342c6e0 Zeev Suraski Whatnot:
zsuraski authored
86
0b6d923 Add ZEND_GET_MODULE(name). This is a short-cut for the common
Sascha Schumann authored
87 #define ZEND_GET_MODULE(name) \
cb71ac0 C++ compile fixes
Hartmut Holzgraefe authored
88 BEGIN_EXTERN_C()\
89 ZEND_DLEXPORT zend_module_entry *get_module(void) { return &name##_module_entry; }\
90 END_EXTERN_C()
0d21940 Zeev Suraski Generalize some common thread-safety stuff
zsuraski authored
91
92 #define ZEND_BEGIN_MODULE_GLOBALS(module_name) \
93 typedef struct _zend_##module_name##_globals {
94 #define ZEND_END_MODULE_GLOBALS(module_name) \
95 } zend_##module_name##_globals;
96
97 #ifdef ZTS
98
99 #define ZEND_DECLARE_MODULE_GLOBALS(module_name) \
02af513 andigutmans - Patch from Jason Greene.
andigutmans authored
100 ts_rsrc_id module_name##_globals_id;
101 #define ZEND_EXTERN_MODULE_GLOBALS(module_name) \
102 extern ts_rsrc_id module_name##_globals_id;
0d21940 Zeev Suraski Generalize some common thread-safety stuff
zsuraski authored
103 #define ZEND_INIT_MODULE_GLOBALS(module_name, globals_ctor, globals_dtor) \
2c254ba Zeev Suraski Get rid of ELS_*(), and use TSRMLS_*() instead.
zsuraski authored
104 ts_allocate_id(&module_name##_globals_id, sizeof(zend_##module_name##_globals), (ts_allocate_ctor) globals_ctor, (ts_allocate_dtor) globals_dtor);
0d21940 Zeev Suraski Generalize some common thread-safety stuff
zsuraski authored
105
106 #else
107
108 #define ZEND_DECLARE_MODULE_GLOBALS(module_name) \
02af513 andigutmans - Patch from Jason Greene.
andigutmans authored
109 zend_##module_name##_globals module_name##_globals;
110 #define ZEND_EXTERN_MODULE_GLOBALS(module_name) \
111 extern zend_##module_name##_globals module_name##_globals;
0d21940 Zeev Suraski Generalize some common thread-safety stuff
zsuraski authored
112 #define ZEND_INIT_MODULE_GLOBALS(module_name, globals_ctor, globals_dtor) \
113 globals_ctor(&module_name##_globals);
114
115 #endif
116
117
118
3738a6e only check for an available class entry instead of
Harald Radi authored
119 #define INIT_CLASS_ENTRY(class_container, class_name, functions) INIT_OVERLOADED_CLASS_ENTRY(class_container, class_name, functions, NULL, NULL, NULL)
741b816 Zeev Suraski * Support getThis() for internal functions.
zsuraski authored
120
345e025 Fixed bug #33512 (Add missing support for isset()/unset() overloading to...
Dmitry Stogov authored
121 #define INIT_OVERLOADED_CLASS_ENTRY_EX(class_container, class_name, functions, handle_fcall, handle_propget, handle_propset, handle_propunset, handle_propisset) \
741b816 Zeev Suraski * Support getThis() for internal functions.
zsuraski authored
122 { \
123 class_container.name = strdup(class_name); \
b1b8ed6 Revert to sizeof()
Marcus Boerger authored
124 class_container.name_length = sizeof(class_name) - 1; \
741b816 Zeev Suraski * Support getThis() for internal functions.
zsuraski authored
125 class_container.builtin_functions = functions; \
2eccd95 andigutmans - Add some initializations
andigutmans authored
126 class_container.constructor = NULL; \
73b159e andigutmans - Experimental support for destructors. We need to see if destructors
andigutmans authored
127 class_container.destructor = NULL; \
29ea3da andigutmans - Pretty much finish _clone() support
andigutmans authored
128 class_container.clone = NULL; \
6608f07 Stanislav Malyshev Mega-commit: Enter the new object model
smalyshev authored
129 class_container.create_object = NULL; \
3c62b3b Expand Interface C API.
Marcus Boerger authored
130 class_container.interface_gets_implemented = NULL; \
2ae8d12 Stanislav Malyshev Remove handle_property from here too
smalyshev authored
131 class_container.__call = handle_fcall; \
132 class_container.__get = handle_propget; \
133 class_container.__set = handle_propset; \
345e025 Fixed bug #33512 (Add missing support for isset()/unset() overloading to...
Dmitry Stogov authored
134 class_container.__unset = handle_propunset; \
135 class_container.__isset = handle_propisset; \
c087f07 - These must be initailized
Marcus Boerger authored
136 class_container.serialize = NULL; \
137 class_container.unserialize = NULL; \
15964bb Fix order of class_entry member initialization (needed for example for D...
Marcus Boerger authored
138 class_container.parent = NULL; \
25aa8b7 Added c-api for iterators
Marcus Boerger authored
139 class_container.num_interfaces = 0; \
15964bb Fix order of class_entry member initialization (needed for example for D...
Marcus Boerger authored
140 class_container.interfaces = NULL; \
25aa8b7 Added c-api for iterators
Marcus Boerger authored
141 class_container.get_iterator = NULL; \
b0b8254 Fix class/iterator relationship & handling
Marcus Boerger authored
142 class_container.iterator_funcs.funcs = NULL; \
5230321 - Fix Reflection class names
Marcus Boerger authored
143 class_container.module = NULL; \
741b816 Zeev Suraski * Support getThis() for internal functions.
zsuraski authored
144 }
145
345e025 Fixed bug #33512 (Add missing support for isset()/unset() overloading to...
Dmitry Stogov authored
146 #define INIT_OVERLOADED_CLASS_ENTRY(class_container, class_name, functions, handle_fcall, handle_propget, handle_propset) \
147 INIT_OVERLOADED_CLASS_ENTRY_EX(class_container, class_name, functions, handle_fcall, handle_propget, handle_propset, NULL, NULL)
148
573b460 andigutmans Zend Library
andigutmans authored
149 int zend_next_free_module(void);
150
1727c6a more EXTERN_C wrapping of ZEND_API prototypes
Hartmut Holzgraefe authored
151 BEGIN_EXTERN_C()
f77e6a4 Zeev Suraski Generalize macros
zsuraski authored
152 ZEND_API int zend_get_parameters(int ht, int param_count, ...);
11e5d2f Zeev Suraski Get rid of more TSRMLS_FETCH's
zsuraski authored
153 ZEND_API int _zend_get_parameters_array(int ht, int param_count, zval **argument_array TSRMLS_DC);
f77e6a4 Zeev Suraski Generalize macros
zsuraski authored
154 ZEND_API int zend_get_parameters_ex(int param_count, ...);
11e5d2f Zeev Suraski Get rid of more TSRMLS_FETCH's
zsuraski authored
155 ZEND_API int _zend_get_parameters_array_ex(int param_count, zval ***argument_array TSRMLS_DC);
156
e39f3f3 Simplify/Optmize magic method calls (__get/__set/__call/__clone/__destru...
Marcus Boerger authored
157 /* internal function to efficiently copy parameters when executing __call() */
158 ZEND_API int zend_copy_parameters_array(int param_count, zval *argument_array TSRMLS_DC);
159
11e5d2f Zeev Suraski Get rid of more TSRMLS_FETCH's
zsuraski authored
160 #define zend_get_parameters_array(ht, param_count, argument_array) \
161 _zend_get_parameters_array(ht, param_count, argument_array TSRMLS_CC)
162 #define zend_get_parameters_array_ex(param_count, argument_array) \
163 _zend_get_parameters_array_ex(param_count, argument_array TSRMLS_CC)
39f9487 andigutmans -Tiny patches
andigutmans authored
164
58f8805 Adding new parameter parsing API.
Andrei Zmievski authored
165
166 /* Parameter parsing API -- andrei */
167
168 #define ZEND_PARSE_PARAMS_QUIET 1<<1
8ce8324 Zeev Suraski More TSRMLS_FETCH annihilation
zsuraski authored
169 ZEND_API int zend_parse_parameters(int num_args TSRMLS_DC, char *type_spec, ...);
3839af3 Let's be consisten and keep TSRMLS_DC declaration after num_args.
Andrei Zmievski authored
170 ZEND_API int zend_parse_parameters_ex(int flags, int num_args TSRMLS_DC, char *type_spec, ...);
9b391a8 - MFZE1 for exit fix, exposing current function name in error messages a...
Derick Rethans authored
171 ZEND_API char *zend_zval_type_name(zval *arg);
58f8805 Adding new parameter parsing API.
Andrei Zmievski authored
172
325f9ed fixed zend_parse_method_param
Georg Richter authored
173 ZEND_API int zend_parse_method_parameters(int num_args TSRMLS_DC, zval *this_ptr, char *type_spec, ...);
8d45fec Fix zend_parse_method_parameters_ex() and make it consistant with
Marcus Boerger authored
174 ZEND_API int zend_parse_method_parameters_ex(int flags, int num_args TSRMLS_DC, zval *this_ptr, char *type_spec, ...);
c4528f8 extend the parameter parsing API by two functions
Harald Radi authored
175
b525549 Zeev Suraski More TSRMLS_FETCH work, and get rid of redundant ParametersPassedByRef
zsuraski authored
176 /* End of parameter parsing API -- andrei */
39f9487 andigutmans -Tiny patches
andigutmans authored
177
273c193 Wez Furlong export these symbols for use by SPL as a shared extension
wez authored
178 ZEND_API int zend_register_functions(zend_class_entry *scope, zend_function_entry *functions, HashTable *function_table, int type TSRMLS_DC);
179 ZEND_API void zend_unregister_functions(zend_function_entry *functions, int count, HashTable *function_table TSRMLS_DC);
2ca2dc0 Restored old behavior of zend_statup_module()
Dmitry Stogov authored
180 ZEND_API int zend_startup_module(zend_module_entry *module_entry);
70bd938 Fixed bug in new module statrup mechanism
Dmitry Stogov authored
181 ZEND_API zend_module_entry* zend_register_internal_module(zend_module_entry *module_entry TSRMLS_DC);
182 ZEND_API zend_module_entry* zend_register_module_ex(zend_module_entry *module TSRMLS_DC);
2ca2dc0 Restored old behavior of zend_statup_module()
Dmitry Stogov authored
183 ZEND_API int zend_startup_module_ex(zend_module_entry *module TSRMLS_DC);
c0c7a9f Improved PHP extension loading mechanism with support for module depende...
Dmitry Stogov authored
184 ZEND_API int zend_startup_modules(TSRMLS_D);
6bd3c36 andigutmans - Recommit:
andigutmans authored
185 ZEND_API void zend_check_magic_method_implementation(zend_class_entry *ce, zend_function *fptr, int error_type TSRMLS_DC);
eb0e694 andigutmans - Andrei, this is for you!
andigutmans authored
186
b577038 Zeev Suraski Avoid TSRMLS_FETCH()'s (still lots of work left)
zsuraski authored
187 ZEND_API zend_class_entry *zend_register_internal_class(zend_class_entry *class_entry TSRMLS_DC);
188 ZEND_API zend_class_entry *zend_register_internal_class_ex(zend_class_entry *class_entry, zend_class_entry *parent_ce, char *parent_name TSRMLS_DC);
3c62b3b Expand Interface C API.
Marcus Boerger authored
189 ZEND_API zend_class_entry *zend_register_internal_interface(zend_class_entry *orig_class_entry TSRMLS_DC);
4073a08 Add oo support function zend_class_implements()
Marcus Boerger authored
190 ZEND_API void zend_class_implements(zend_class_entry *class_entry TSRMLS_DC, int num_interfaces, ...);
eb0e694 andigutmans - Andrei, this is for you!
andigutmans authored
191
d76cf1d Zeev Suraski More TSRMLS_FETCH work
zsuraski authored
192 ZEND_API int zend_disable_function(char *function_name, uint function_name_length TSRMLS_DC);
a700180 commiting zend_disable_class patch for George:
Harald Radi authored
193 ZEND_API int zend_disable_class(char *class_name, uint class_name_length TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
194
4187439 Zeev Suraski More TSRMLS_FETCH work
zsuraski authored
195 ZEND_API void zend_wrong_param_count(TSRMLS_D);
c81db6b Fixed bug #29210 (Function: is_callable - no support for private and pro...
Dmitry Stogov authored
196
197 #define IS_CALLABLE_CHECK_SYNTAX_ONLY (1<<0)
198 #define IS_CALLABLE_CHECK_NO_ACCESS (1<<1)
53e5260 - Add convenience function zend_is_callable_ex() and base zend_is_callab...
Marcus Boerger authored
199 #define IS_CALLABLE_CHECK_IS_STATIC (1<<2)
c81db6b Fixed bug #29210 (Function: is_callable - no support for private and pro...
Dmitry Stogov authored
200
2486b84 - MFH zend_is_callable_ex() returns zend_class_entry* if available
Marcus Boerger authored
201 ZEND_API zend_bool zend_is_callable_ex(zval *callable, uint check_flags, char **callable_name, int *callable_name_len, zend_class_entry **ce_ptr, zend_function **fptr_ptr, zval ***zobj_ptr_ptr TSRMLS_DC);
c81db6b Fixed bug #29210 (Function: is_callable - no support for private and pro...
Dmitry Stogov authored
202 ZEND_API zend_bool zend_is_callable(zval *callable, uint check_flags, char **callable_name);
26bfe3f Add zend_make_callable() which allows to make zval's callable zval's.
Marcus Boerger authored
203 ZEND_API zend_bool zend_make_callable(zval *callable, char **callable_name TSRMLS_DC);
0185071 MFZE1: Introduced extension version numbers (Stig)
Sebastian Bergmann authored
204 ZEND_API char *zend_get_module_version(char *module_name);
805dfab Add zend_get_module_started() to quickly check whether a module is prese...
Marcus Boerger authored
205 ZEND_API int zend_get_module_started(char *module_name);
7bbbd50 Fix handling of static properties initialized to arrays
Marcus Boerger authored
206 ZEND_API int zend_declare_property(zend_class_entry *ce, char *name, int name_length, zval *property, int access_type TSRMLS_DC);
67a226d - Add ReflectionProperty::getDocComment()
Marcus Boerger authored
207 ZEND_API int zend_declare_property_ex(zend_class_entry *ce, char *name, int name_length, zval *property, int access_type, char *doc_comment, int doc_comment_len TSRMLS_DC);
7bbbd50 Fix handling of static properties initialized to arrays
Marcus Boerger authored
208 ZEND_API int zend_declare_property_null(zend_class_entry *ce, char *name, int name_length, int access_type TSRMLS_DC);
d88c2b1 added some missing zend_[declare|update]_property_...() convenience
Hartmut Holzgraefe authored
209 ZEND_API int zend_declare_property_bool(zend_class_entry *ce, char *name, int name_length, long value, int access_type TSRMLS_DC);
7bbbd50 Fix handling of static properties initialized to arrays
Marcus Boerger authored
210 ZEND_API int zend_declare_property_long(zend_class_entry *ce, char *name, int name_length, long value, int access_type TSRMLS_DC);
d88c2b1 added some missing zend_[declare|update]_property_...() convenience
Hartmut Holzgraefe authored
211 ZEND_API int zend_declare_property_double(zend_class_entry *ce, char *name, int name_length, double value, int access_type TSRMLS_DC);
7bbbd50 Fix handling of static properties initialized to arrays
Marcus Boerger authored
212 ZEND_API int zend_declare_property_string(zend_class_entry *ce, char *name, int name_length, char *value, int access_type TSRMLS_DC);
d88c2b1 added some missing zend_[declare|update]_property_...() convenience
Hartmut Holzgraefe authored
213 ZEND_API int zend_declare_property_stringl(zend_class_entry *ce, char *name, int name_length, char *value, int value_len, int access_type TSRMLS_DC);
1343385 Zeev Suraski Rework zend_do_declare_property and related code into one code base
zsuraski authored
214
248345d Support for class constants and static members for internal classes
Dmitry Stogov authored
215 ZEND_API int zend_declare_class_constant(zend_class_entry *ce, char *name, size_t name_length, zval *value TSRMLS_DC);
216 ZEND_API int zend_declare_class_constant_long(zend_class_entry *ce, char *name, size_t name_length, long value TSRMLS_DC);
217 ZEND_API int zend_declare_class_constant_bool(zend_class_entry *ce, char *name, size_t name_length, zend_bool value TSRMLS_DC);
218 ZEND_API int zend_declare_class_constant_double(zend_class_entry *ce, char *name, size_t name_length, double value TSRMLS_DC);
219 ZEND_API int zend_declare_class_constant_stringl(zend_class_entry *ce, char *name, size_t name_length, char *value, size_t value_length TSRMLS_DC);
220 ZEND_API int zend_declare_class_constant_string(zend_class_entry *ce, char *name, size_t name_length, char *value TSRMLS_DC);
221
1d5c13b - Fix #31651 (ReflectionClass::getDefaultProperties segfaults with array...
Marcus Boerger authored
222 ZEND_API void zend_update_class_constants(zend_class_entry *class_type TSRMLS_DC);
baaa4c9 Internal classes can now have default properties.
Marcus Boerger authored
223 ZEND_API void zend_update_property(zend_class_entry *scope, zval *object, char *name, int name_length, zval *value TSRMLS_DC);
224 ZEND_API void zend_update_property_null(zend_class_entry *scope, zval *object, char *name, int name_length TSRMLS_DC);
d88c2b1 added some missing zend_[declare|update]_property_...() convenience
Hartmut Holzgraefe authored
225 ZEND_API void zend_update_property_bool(zend_class_entry *scope, zval *object, char *name, int name_length, long value TSRMLS_DC);
baaa4c9 Internal classes can now have default properties.
Marcus Boerger authored
226 ZEND_API void zend_update_property_long(zend_class_entry *scope, zval *object, char *name, int name_length, long value TSRMLS_DC);
d88c2b1 added some missing zend_[declare|update]_property_...() convenience
Hartmut Holzgraefe authored
227 ZEND_API void zend_update_property_double(zend_class_entry *scope, zval *object, char *name, int name_length, double value TSRMLS_DC);
baaa4c9 Internal classes can now have default properties.
Marcus Boerger authored
228 ZEND_API void zend_update_property_string(zend_class_entry *scope, zval *object, char *name, int name_length, char *value TSRMLS_DC);
d88c2b1 added some missing zend_[declare|update]_property_...() convenience
Hartmut Holzgraefe authored
229 ZEND_API void zend_update_property_stringl(zend_class_entry *scope, zval *object, char *name, int name_length, char *value, int value_length TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
230
248345d Support for class constants and static members for internal classes
Dmitry Stogov authored
231 ZEND_API int zend_update_static_property(zend_class_entry *scope, char *name, int name_length, zval *value TSRMLS_DC);
232 ZEND_API int zend_update_static_property_null(zend_class_entry *scope, char *name, int name_length TSRMLS_DC);
233 ZEND_API int zend_update_static_property_bool(zend_class_entry *scope, char *name, int name_length, long value TSRMLS_DC);
234 ZEND_API int zend_update_static_property_long(zend_class_entry *scope, char *name, int name_length, long value TSRMLS_DC);
235 ZEND_API int zend_update_static_property_double(zend_class_entry *scope, char *name, int name_length, double value TSRMLS_DC);
236 ZEND_API int zend_update_static_property_string(zend_class_entry *scope, char *name, int name_length, char *value TSRMLS_DC);
237 ZEND_API int zend_update_static_property_stringl(zend_class_entry *scope, char *name, int name_length, char *value, int value_length TSRMLS_DC);
238
38805f2 Add property read code and use that in default exception class
Marcus Boerger authored
239 ZEND_API zval *zend_read_property(zend_class_entry *scope, zval *object, char *name, int name_length, zend_bool silent TSRMLS_DC);
240
248345d Support for class constants and static members for internal classes
Dmitry Stogov authored
241 ZEND_API zval *zend_read_static_property(zend_class_entry *scope, char *name, int name_length, zend_bool silent TSRMLS_DC);
242
3fc8528 Eliminate TSRMLS_FETCH() calls in destroy_op_array() and zend_get_class_...
Sebastian Bergmann authored
243 ZEND_API zend_class_entry *zend_get_class_entry(zval *zobject TSRMLS_DC);
d5a1296 Stanislav Malyshev fix various "Class entry requested for an object without PHP class" mess...
smalyshev authored
244 ZEND_API int zend_get_object_classname(zval *object, char **class_name, zend_uint *class_name_len TSRMLS_DC);
6ac6cb1 added get_class_entry callback handler to the
Harald Radi authored
245
741b816 Zeev Suraski * Support getThis() for internal functions.
zsuraski authored
246 #define getThis() (this_ptr)
247
131d9cb Zeev Suraski *** empty log message ***
zsuraski authored
248 #define WRONG_PARAM_COUNT ZEND_WRONG_PARAM_COUNT()
249 #define WRONG_PARAM_COUNT_WITH_RETVAL(ret) ZEND_WRONG_PARAM_COUNT_WITH_RETVAL(ret)
a1ad287 Zeev Suraski - The tree compiles again
zsuraski authored
250 #define ARG_COUNT(dummy) (ht)
251 #define ZEND_NUM_ARGS() (ht)
4187439 Zeev Suraski More TSRMLS_FETCH work
zsuraski authored
252 #define ZEND_WRONG_PARAM_COUNT() { zend_wrong_param_count(TSRMLS_C); return; }
253 #define ZEND_WRONG_PARAM_COUNT_WITH_RETVAL(ret) { zend_wrong_param_count(TSRMLS_C); return ret; }
573b460 andigutmans Zend Library
andigutmans authored
254
80bdd19 Zeev Suraski Fine tune Andi's patch
zsuraski authored
255 #ifndef ZEND_WIN32
573b460 andigutmans Zend Library
andigutmans authored
256 #define DLEXPORT
257 #endif
258
ceba50b Zeev Suraski - Fix a nasty bug in the hash, introduced in the recent migration to mac...
zsuraski authored
259 #define array_init(arg) _array_init((arg) ZEND_FILE_LINE_CC)
fcc0351 Zeev Suraski TSRMLS_FETCH work
zsuraski authored
260 #define object_init(arg) _object_init((arg) ZEND_FILE_LINE_CC TSRMLS_CC)
261 #define object_init_ex(arg, ce) _object_init_ex((arg), (ce) ZEND_FILE_LINE_CC TSRMLS_CC)
76a7a5b andigutmans - More work on making objects work
andigutmans authored
262 #define object_and_properties_init(arg, ce, properties) _object_and_properties_init((arg), (ce), (properties) ZEND_FILE_LINE_CC TSRMLS_CC)
ceba50b Zeev Suraski - Fix a nasty bug in the hash, introduced in the recent migration to mac...
zsuraski authored
263 ZEND_API int _array_init(zval *arg ZEND_FILE_LINE_DC);
fcc0351 Zeev Suraski TSRMLS_FETCH work
zsuraski authored
264 ZEND_API int _object_init(zval *arg ZEND_FILE_LINE_DC TSRMLS_DC);
265 ZEND_API int _object_init_ex(zval *arg, zend_class_entry *ce ZEND_FILE_LINE_DC TSRMLS_DC);
76a7a5b andigutmans - More work on making objects work
andigutmans authored
266 ZEND_API int _object_and_properties_init(zval *arg, zend_class_entry *ce, HashTable *properties ZEND_FILE_LINE_DC TSRMLS_DC);
6847fef added add_*_resource() and add_*_bool() functions
Thies C. Arntzen authored
267
047a574 - Add zend_merge_properties() which is designed to serve *_fetch_object(...
Marcus Boerger authored
268 ZEND_API void zend_merge_properties(zval *obj, HashTable *properties, int destroy_ht TSRMLS_DC);
269
6847fef added add_*_resource() and add_*_bool() functions
Thies C. Arntzen authored
270 /* no longer supported */
4f6c95d Zeev Suraski Whitespace
zsuraski authored
271 ZEND_API int add_assoc_function(zval *arg, char *key, void (*function_ptr)(INTERNAL_FUNCTION_PARAMETERS));
6847fef added add_*_resource() and add_*_bool() functions
Thies C. Arntzen authored
272
ef95a34 andigutmans - Patch from Sterling. Add API calls to add zval's as array indeces/
andigutmans authored
273 ZEND_API int add_assoc_long_ex(zval *arg, char *key, uint key_len, long n);
0611acb andigutmans - Change unset() functions to null(). unset() is legacy
andigutmans authored
274 ZEND_API int add_assoc_null_ex(zval *arg, char *key, uint key_len);
ef95a34 andigutmans - Patch from Sterling. Add API calls to add zval's as array indeces/
andigutmans authored
275 ZEND_API int add_assoc_bool_ex(zval *arg, char *key, uint key_len, int b);
276 ZEND_API int add_assoc_resource_ex(zval *arg, char *key, uint key_len, int r);
277 ZEND_API int add_assoc_double_ex(zval *arg, char *key, uint key_len, double d);
278 ZEND_API int add_assoc_string_ex(zval *arg, char *key, uint key_len, char *str, int duplicate);
279 ZEND_API int add_assoc_stringl_ex(zval *arg, char *key, uint key_len, char *str, uint length, int duplicate);
280 ZEND_API int add_assoc_zval_ex(zval *arg, char *key, uint key_len, zval *value);
281
282 #define add_assoc_long(__arg, __key, __n) add_assoc_long_ex(__arg, __key, strlen(__key)+1, __n)
0611acb andigutmans - Change unset() functions to null(). unset() is legacy
andigutmans authored
283 #define add_assoc_null(__arg, __key) add_assoc_null_ex(__arg, __key, strlen(__key) + 1)
ef95a34 andigutmans - Patch from Sterling. Add API calls to add zval's as array indeces/
andigutmans authored
284 #define add_assoc_bool(__arg, __key, __b) add_assoc_bool_ex(__arg, __key, strlen(__key)+1, __b)
285 #define add_assoc_resource(__arg, __key, __r) add_assoc_resource_ex(__arg, __key, strlen(__key)+1, __r)
286 #define add_assoc_double(__arg, __key, __d) add_assoc_double_ex(__arg, __key, strlen(__key)+1, __d)
287 #define add_assoc_string(__arg, __key, __str, __duplicate) add_assoc_string_ex(__arg, __key, strlen(__key)+1, __str, __duplicate)
288 #define add_assoc_stringl(__arg, __key, __str, __length, __duplicate) add_assoc_stringl_ex(__arg, __key, strlen(__key)+1, __str, __length, __duplicate)
289 #define add_assoc_zval(__arg, __key, __value) add_assoc_zval_ex(__arg, __key, strlen(__key)+1, __value)
6847fef added add_*_resource() and add_*_bool() functions
Thies C. Arntzen authored
290
0611acb andigutmans - Change unset() functions to null(). unset() is legacy
andigutmans authored
291 /* unset() functions are only suported for legacy modules and null() functions should be used */
292 #define add_assoc_unset(__arg, __key) add_assoc_null_ex(__arg, __key, strlen(__key) + 1)
293 #define add_index_unset(__arg, __key) add_index_null(__arg, __key)
294 #define add_next_index_unset(__arg) add_next_index_null(__arg)
295 #define add_property_unset(__arg, __key) add_property_null(__arg, __key)
296
b05b949 Fixed bug #34879 (str_replace, array_map corrupt negative array indexes ...
Dmitry Stogov authored
297 ZEND_API int add_index_long(zval *arg, ulong idx, long n);
298 ZEND_API int add_index_null(zval *arg, ulong idx);
299 ZEND_API int add_index_bool(zval *arg, ulong idx, int b);
300 ZEND_API int add_index_resource(zval *arg, ulong idx, int r);
301 ZEND_API int add_index_double(zval *arg, ulong idx, double d);
302 ZEND_API int add_index_string(zval *arg, ulong idx, char *str, int duplicate);
303 ZEND_API int add_index_stringl(zval *arg, ulong idx, char *str, uint length, int duplicate);
304 ZEND_API int add_index_zval(zval *arg, ulong index, zval *value);
6847fef added add_*_resource() and add_*_bool() functions
Thies C. Arntzen authored
305
573b460 andigutmans Zend Library
andigutmans authored
306 ZEND_API int add_next_index_long(zval *arg, long n);
0611acb andigutmans - Change unset() functions to null(). unset() is legacy
andigutmans authored
307 ZEND_API int add_next_index_null(zval *arg);
6847fef added add_*_resource() and add_*_bool() functions
Thies C. Arntzen authored
308 ZEND_API int add_next_index_bool(zval *arg, int b);
309 ZEND_API int add_next_index_resource(zval *arg, int r);
573b460 andigutmans Zend Library
andigutmans authored
310 ZEND_API int add_next_index_double(zval *arg, double d);
311 ZEND_API int add_next_index_string(zval *arg, char *str, int duplicate);
312 ZEND_API int add_next_index_stringl(zval *arg, char *str, uint length, int duplicate);
ef95a34 andigutmans - Patch from Sterling. Add API calls to add zval's as array indeces/
andigutmans authored
313 ZEND_API int add_next_index_zval(zval *arg, zval *value);
314
315 ZEND_API int add_get_assoc_string_ex(zval *arg, char *key, uint key_len, char *str, void **dest, int duplicate);
316 ZEND_API int add_get_assoc_stringl_ex(zval *arg, char *key, uint key_len, char *str, uint length, void **dest, int duplicate);
317
318 #define add_get_assoc_string(__arg, __key, __str, __dest, __duplicate) add_get_assoc_string_ex(__arg, __key, strlen(__key)+1, __str, __dest, __duplicate)
319 #define add_get_assoc_stringl(__arg, __key, __str, __length, __dest, __duplicate) add_get_assoc_stringl_ex(__arg, __key, strlen(__key)+1, __str, __length, __dest, __duplicate)
573b460 andigutmans Zend Library
andigutmans authored
320
b05b949 Fixed bug #34879 (str_replace, array_map corrupt negative array indexes ...
Dmitry Stogov authored
321 ZEND_API int add_get_index_long(zval *arg, ulong idx, long l, void **dest);
322 ZEND_API int add_get_index_double(zval *arg, ulong idx, double d, void **dest);
323 ZEND_API int add_get_index_string(zval *arg, ulong idx, char *str, void **dest, int duplicate);
324 ZEND_API int add_get_index_stringl(zval *arg, ulong idx, char *str, uint length, void **dest, int duplicate);
573b460 andigutmans Zend Library
andigutmans authored
325
eccc536 Stanislav Malyshev Make add_property_ functions work via write_property handler
smalyshev authored
326 ZEND_API int add_property_long_ex(zval *arg, char *key, uint key_len, long l TSRMLS_DC);
327 ZEND_API int add_property_null_ex(zval *arg, char *key, uint key_len TSRMLS_DC);
328 ZEND_API int add_property_bool_ex(zval *arg, char *key, uint key_len, int b TSRMLS_DC);
329 ZEND_API int add_property_resource_ex(zval *arg, char *key, uint key_len, long r TSRMLS_DC);
330 ZEND_API int add_property_double_ex(zval *arg, char *key, uint key_len, double d TSRMLS_DC);
331 ZEND_API int add_property_string_ex(zval *arg, char *key, uint key_len, char *str, int duplicate TSRMLS_DC);
332 ZEND_API int add_property_stringl_ex(zval *arg, char *key, uint key_len, char *str, uint length, int duplicate TSRMLS_DC);
333 ZEND_API int add_property_zval_ex(zval *arg, char *key, uint key_len, zval *value TSRMLS_DC);
334
335 #define add_property_long(__arg, __key, __n) add_property_long_ex(__arg, __key, strlen(__key)+1, __n TSRMLS_CC)
336 #define add_property_null(__arg, __key) add_property_null_ex(__arg, __key, strlen(__key) + 1 TSRMLS_CC)
337 #define add_property_bool(__arg, __key, __b) add_property_bool_ex(__arg, __key, strlen(__key)+1, __b TSRMLS_CC)
338 #define add_property_resource(__arg, __key, __r) add_property_resource_ex(__arg, __key, strlen(__key)+1, __r TSRMLS_CC)
339 #define add_property_double(__arg, __key, __d) add_property_double_ex(__arg, __key, strlen(__key)+1, __d TSRMLS_CC)
340 #define add_property_string(__arg, __key, __str, __duplicate) add_property_string_ex(__arg, __key, strlen(__key)+1, __str, __duplicate TSRMLS_CC)
341 #define add_property_stringl(__arg, __key, __str, __length, __duplicate) add_property_stringl_ex(__arg, __key, strlen(__key)+1, __str, __length, __duplicate TSRMLS_CC)
342 #define add_property_zval(__arg, __key, __value) add_property_zval_ex(__arg, __key, strlen(__key)+1, __value TSRMLS_CC)
ef95a34 andigutmans - Patch from Sterling. Add API calls to add zval's as array indeces/
andigutmans authored
343
92b4013 Zeev Suraski Try to put an end to the endless number of call_user_function variants.
zsuraski authored
344
f8bbafd Zeev Suraski ntroduce infrastructure for supplying information about arguments,
zsuraski authored
345 ZEND_API int call_user_function(HashTable *function_table, zval **object_pp, zval *function_name, zval *retval_ptr, zend_uint param_count, zval *params[] TSRMLS_DC);
346 ZEND_API int call_user_function_ex(HashTable *function_table, zval **object_pp, zval *function_name, zval **retval_ptr_ptr, zend_uint param_count, zval **params[], int no_separation, HashTable *symbol_table TSRMLS_DC);
1727c6a more EXTERN_C wrapping of ZEND_API prototypes
Hartmut Holzgraefe authored
347 END_EXTERN_C()
92b4013 Zeev Suraski Try to put an end to the endless number of call_user_function variants.
zsuraski authored
348
349 typedef struct _zend_fcall_info {
350 size_t size;
351 HashTable *function_table;
352 zval *function_name;
353 HashTable *symbol_table;
354 zval **retval_ptr_ptr;
355 zend_uint param_count;
356 zval ***params;
357 zval **object_pp;
358 zend_bool no_separation;
359 } zend_fcall_info;
360
361 typedef struct _zend_fcall_info_cache {
362 zend_bool initialized;
363 zend_function *function_handler;
364 zend_class_entry *calling_scope;
365 zval **object_pp;
366 } zend_fcall_info_cache;
367
1727c6a more EXTERN_C wrapping of ZEND_API prototypes
Hartmut Holzgraefe authored
368 BEGIN_EXTERN_C()
92b4013 Zeev Suraski Try to put an end to the endless number of call_user_function variants.
zsuraski authored
369 ZEND_API extern zend_fcall_info_cache empty_fcall_info_cache;
370
371 ZEND_API int zend_call_function(zend_fcall_info *fci, zend_fcall_info_cache *fci_cache TSRMLS_DC);
372
573b460 andigutmans Zend Library
andigutmans authored
373
f962a35 Added zend_set_hash_symbol() function.
Andrei Zmievski authored
374 ZEND_API int zend_set_hash_symbol(zval *symbol, char *name, int name_length,
51e797f some type cleanup work
Harald Radi authored
375 zend_bool is_ref, int num_symbol_tables, ...);
f962a35 Added zend_set_hash_symbol() function.
Andrei Zmievski authored
376
11bcaed andigutmans - Rename delete_global_variable() to zend_delete_global_variable()
andigutmans authored
377 ZEND_API int zend_delete_global_variable(char *name, int name_len TSRMLS_DC);
db507dd andigutmans - Commit the variable fetch optimization.
andigutmans authored
378
1d33a3e Fixed bug #31158 (array_splice on $GLOBALS crashes)
Dmitry Stogov authored
379 ZEND_API void zend_reset_all_cv(HashTable *symbol_table TSRMLS_DC);
380
4f6c95d Zeev Suraski Whitespace
zsuraski authored
381 #define add_method(arg, key, method) add_assoc_function((arg), (key), (method))
573b460 andigutmans Zend Library
andigutmans authored
382
a35c61a MFZE1
Andrei Zmievski authored
383 ZEND_API ZEND_FUNCTION(display_disabled_function);
a700180 commiting zend_disable_class patch for George:
Harald Radi authored
384 ZEND_API ZEND_FUNCTION(display_disabled_class);
1727c6a more EXTERN_C wrapping of ZEND_API prototypes
Hartmut Holzgraefe authored
385 END_EXTERN_C()
a35c61a MFZE1
Andrei Zmievski authored
386
bcddfd4 cleaned up the RETVAL_ RETURN_ and ZVAL_ macros
Thies C. Arntzen authored
387 #if ZEND_DEBUG
388 #define CHECK_ZVAL_STRING(z) \
ace55f3 Zeev Suraski Unify and make it easy to add code into the broken-string error handler
zsuraski authored
389 if ((z)->value.str.val[ (z)->value.str.len ] != '\0') { zend_error(E_WARNING, "String is not zero-terminated (%s)", (z)->value.str.val); }
43ebb86 Zeev Suraski Fix bug #10287 - avoid crashing under a bogus usage of list()
zsuraski authored
390 #define CHECK_ZVAL_STRING_REL(z) \
ace55f3 Zeev Suraski Unify and make it easy to add code into the broken-string error handler
zsuraski authored
391 if ((z)->value.str.val[ (z)->value.str.len ] != '\0') { zend_error(E_WARNING, "String is not zero-terminated (%s) (source: %s:%d)", (z)->value.str.val ZEND_FILE_LINE_RELAY_CC); }
bcddfd4 cleaned up the RETVAL_ RETURN_ and ZVAL_ macros
Thies C. Arntzen authored
392 #else
393 #define CHECK_ZVAL_STRING(z)
43ebb86 Zeev Suraski Fix bug #10287 - avoid crashing under a bogus usage of list()
zsuraski authored
394 #define CHECK_ZVAL_STRING_REL(z)
bcddfd4 cleaned up the RETVAL_ RETURN_ and ZVAL_ macros
Thies C. Arntzen authored
395 #endif
396
4f6c95d Zeev Suraski Whitespace
zsuraski authored
397 #define ZVAL_RESOURCE(z, l) { \
af22085 added ZVAL_*() macros.
Thies C. Arntzen authored
398 (z)->type = IS_RESOURCE; \
399 (z)->value.lval = l; \
400 }
bcddfd4 cleaned up the RETVAL_ RETURN_ and ZVAL_ macros
Thies C. Arntzen authored
401
4f6c95d Zeev Suraski Whitespace
zsuraski authored
402 #define ZVAL_BOOL(z, b) { \
af22085 added ZVAL_*() macros.
Thies C. Arntzen authored
403 (z)->type = IS_BOOL; \
05152d3 this little piggy broke lots of things...eg. _function_check_flag in ref...
Shane Caraveo authored
404 (z)->value.lval = ((b) != 0); \
af22085 added ZVAL_*() macros.
Thies C. Arntzen authored
405 }
bcddfd4 cleaned up the RETVAL_ RETURN_ and ZVAL_ macros
Thies C. Arntzen authored
406
af22085 added ZVAL_*() macros.
Thies C. Arntzen authored
407 #define ZVAL_NULL(z) { \
408 (z)->type = IS_NULL; \
409 }
bcddfd4 cleaned up the RETVAL_ RETURN_ and ZVAL_ macros
Thies C. Arntzen authored
410
4f6c95d Zeev Suraski Whitespace
zsuraski authored
411 #define ZVAL_LONG(z, l) { \
af22085 added ZVAL_*() macros.
Thies C. Arntzen authored
412 (z)->type = IS_LONG; \
413 (z)->value.lval = l; \
414 }
bcddfd4 cleaned up the RETVAL_ RETURN_ and ZVAL_ macros
Thies C. Arntzen authored
415
4f6c95d Zeev Suraski Whitespace
zsuraski authored
416 #define ZVAL_DOUBLE(z, d) { \
af22085 added ZVAL_*() macros.
Thies C. Arntzen authored
417 (z)->type = IS_DOUBLE; \
418 (z)->value.dval = d; \
419 }
bcddfd4 cleaned up the RETVAL_ RETURN_ and ZVAL_ macros
Thies C. Arntzen authored
420
4f6c95d Zeev Suraski Whitespace
zsuraski authored
421 #define ZVAL_STRING(z, s, duplicate) { \
af22085 added ZVAL_*() macros.
Thies C. Arntzen authored
422 char *__s=(s); \
423 (z)->value.str.len = strlen(__s); \
4f6c95d Zeev Suraski Whitespace
zsuraski authored
424 (z)->value.str.val = (duplicate?estrndup(__s, (z)->value.str.len):__s); \
af22085 added ZVAL_*() macros.
Thies C. Arntzen authored
425 (z)->type = IS_STRING; \
426 }
bcddfd4 cleaned up the RETVAL_ RETURN_ and ZVAL_ macros
Thies C. Arntzen authored
427
4f6c95d Zeev Suraski Whitespace
zsuraski authored
428 #define ZVAL_STRINGL(z, s, l, duplicate) { \
af22085 added ZVAL_*() macros.
Thies C. Arntzen authored
429 char *__s=(s); int __l=l; \
430 (z)->value.str.len = __l; \
4f6c95d Zeev Suraski Whitespace
zsuraski authored
431 (z)->value.str.val = (duplicate?estrndup(__s, __l):__s); \
af22085 added ZVAL_*() macros.
Thies C. Arntzen authored
432 (z)->type = IS_STRING; \
433 }
434
435 #define ZVAL_EMPTY_STRING(z) { \
436 (z)->value.str.len = 0; \
56f8195 andigutmans - Nuke empty_string. It is a reminanent from the time where RETURN_FALSE...
andigutmans authored
437 (z)->value.str.val = STR_EMPTY_ALLOC(); \
af22085 added ZVAL_*() macros.
Thies C. Arntzen authored
438 (z)->type = IS_STRING; \
439 }
440
c7d27ad Add macros to return values of other zvals.
Marcus Boerger authored
441 #define ZVAL_ZVAL(z, zv, copy, dtor) { \
442 int is_ref, refcount; \
443 is_ref = (z)->is_ref; \
444 refcount = (z)->refcount; \
445 *(z) = *(zv); \
446 if (copy) { \
447 zval_copy_ctor(z); \
448 } \
449 if (dtor) { \
32927a9 Free the zval container only if it should be freed and was not copied.
Marcus Boerger authored
450 if (!copy) { \
451 ZVAL_NULL(zv); \
452 } \
6344f66 This takes the address of a zval ptr
Marcus Boerger authored
453 zval_ptr_dtor(&zv); \
c7d27ad Add macros to return values of other zvals.
Marcus Boerger authored
454 } \
455 (z)->is_ref = is_ref; \
456 (z)->refcount = refcount; \
457 }
458
4f6c95d Zeev Suraski Whitespace
zsuraski authored
459 #define ZVAL_FALSE(z) ZVAL_BOOL(z, 0)
460 #define ZVAL_TRUE(z) ZVAL_BOOL(z, 1)
af22085 added ZVAL_*() macros.
Thies C. Arntzen authored
461
4f6c95d Zeev Suraski Whitespace
zsuraski authored
462 #define RETVAL_RESOURCE(l) ZVAL_RESOURCE(return_value, l)
463 #define RETVAL_BOOL(b) ZVAL_BOOL(return_value, b)
bcddfd4 cleaned up the RETVAL_ RETURN_ and ZVAL_ macros
Thies C. Arntzen authored
464 #define RETVAL_NULL() ZVAL_NULL(return_value)
4f6c95d Zeev Suraski Whitespace
zsuraski authored
465 #define RETVAL_LONG(l) ZVAL_LONG(return_value, l)
466 #define RETVAL_DOUBLE(d) ZVAL_DOUBLE(return_value, d)
467 #define RETVAL_STRING(s, duplicate) ZVAL_STRING(return_value, s, duplicate)
468 #define RETVAL_STRINGL(s, l, duplicate) ZVAL_STRINGL(return_value, s, l, duplicate)
bcddfd4 cleaned up the RETVAL_ RETURN_ and ZVAL_ macros
Thies C. Arntzen authored
469 #define RETVAL_EMPTY_STRING() ZVAL_EMPTY_STRING(return_value)
c7d27ad Add macros to return values of other zvals.
Marcus Boerger authored
470 #define RETVAL_ZVAL(zv, copy, dtor) ZVAL_ZVAL(return_value, zv, copy, dtor)
4f6c95d Zeev Suraski Whitespace
zsuraski authored
471 #define RETVAL_FALSE ZVAL_BOOL(return_value, 0)
472 #define RETVAL_TRUE ZVAL_BOOL(return_value, 1)
bcddfd4 cleaned up the RETVAL_ RETURN_ and ZVAL_ macros
Thies C. Arntzen authored
473
474 #define RETURN_RESOURCE(l) { RETVAL_RESOURCE(l); return; }
475 #define RETURN_BOOL(b) { RETVAL_BOOL(b); return; }
476 #define RETURN_NULL() { RETVAL_NULL(); return;}
477 #define RETURN_LONG(l) { RETVAL_LONG(l); return; }
478 #define RETURN_DOUBLE(d) { RETVAL_DOUBLE(d); return; }
4f6c95d Zeev Suraski Whitespace
zsuraski authored
479 #define RETURN_STRING(s, duplicate) { RETVAL_STRING(s, duplicate); return; }
480 #define RETURN_STRINGL(s, l, duplicate) { RETVAL_STRINGL(s, l, duplicate); return; }
bcddfd4 cleaned up the RETVAL_ RETURN_ and ZVAL_ macros
Thies C. Arntzen authored
481 #define RETURN_EMPTY_STRING() { RETVAL_EMPTY_STRING(); return; }
c7d27ad Add macros to return values of other zvals.
Marcus Boerger authored
482 #define RETURN_ZVAL(zv, copy, dtor) { RETVAL_ZVAL(zv, copy, dtor); return; }
bcddfd4 cleaned up the RETVAL_ RETURN_ and ZVAL_ macros
Thies C. Arntzen authored
483 #define RETURN_FALSE { RETVAL_FALSE; return; }
484 #define RETURN_TRUE { RETVAL_TRUE; return; }
1f985ed Zeev Suraski Moved all #define's for SET_ and RETURN_ to zend_API.h
zsuraski authored
485
4f6c95d Zeev Suraski Whitespace
zsuraski authored
486 #define SET_VAR_STRING(n, v) { \
48ffdd7 Zeev Suraski * Setting variables in the global scope wasn't handling is_ref's properl...
zsuraski authored
487 { \
235386b Zeev Suraski Change ALLOC_ZVAL() semantics
zsuraski authored
488 zval *var; \
489 ALLOC_ZVAL(var); \
4f6c95d Zeev Suraski Whitespace
zsuraski authored
490 ZVAL_STRING(var, v, 0); \
6393ab1 Zeev Suraski Now that's an annoying bug.
zsuraski authored
491 ZEND_SET_GLOBAL_VAR(n, var); \
48ffdd7 Zeev Suraski * Setting variables in the global scope wasn't handling is_ref's properl...
zsuraski authored
492 } \
1f985ed Zeev Suraski Moved all #define's for SET_ and RETURN_ to zend_API.h
zsuraski authored
493 }
48ffdd7 Zeev Suraski * Setting variables in the global scope wasn't handling is_ref's properl...
zsuraski authored
494
4f6c95d Zeev Suraski Whitespace
zsuraski authored
495 #define SET_VAR_STRINGL(n, v, l) { \
48ffdd7 Zeev Suraski * Setting variables in the global scope wasn't handling is_ref's properl...
zsuraski authored
496 { \
235386b Zeev Suraski Change ALLOC_ZVAL() semantics
zsuraski authored
497 zval *var; \
498 ALLOC_ZVAL(var); \
4f6c95d Zeev Suraski Whitespace
zsuraski authored
499 ZVAL_STRINGL(var, v, l, 0); \
48ffdd7 Zeev Suraski * Setting variables in the global scope wasn't handling is_ref's properl...
zsuraski authored
500 ZEND_SET_GLOBAL_VAR(n, var); \
501 } \
1f985ed Zeev Suraski Moved all #define's for SET_ and RETURN_ to zend_API.h
zsuraski authored
502 }
48ffdd7 Zeev Suraski * Setting variables in the global scope wasn't handling is_ref's properl...
zsuraski authored
503
4f6c95d Zeev Suraski Whitespace
zsuraski authored
504 #define SET_VAR_LONG(n, v) { \
48ffdd7 Zeev Suraski * Setting variables in the global scope wasn't handling is_ref's properl...
zsuraski authored
505 { \
235386b Zeev Suraski Change ALLOC_ZVAL() semantics
zsuraski authored
506 zval *var; \
507 ALLOC_ZVAL(var); \
4f6c95d Zeev Suraski Whitespace
zsuraski authored
508 ZVAL_LONG(var, v); \
48ffdd7 Zeev Suraski * Setting variables in the global scope wasn't handling is_ref's properl...
zsuraski authored
509 ZEND_SET_GLOBAL_VAR(n, var); \
510 } \
1f985ed Zeev Suraski Moved all #define's for SET_ and RETURN_ to zend_API.h
zsuraski authored
511 }
48ffdd7 Zeev Suraski * Setting variables in the global scope wasn't handling is_ref's properl...
zsuraski authored
512
4f6c95d Zeev Suraski Whitespace
zsuraski authored
513 #define SET_VAR_DOUBLE(n, v) { \
48ffdd7 Zeev Suraski * Setting variables in the global scope wasn't handling is_ref's properl...
zsuraski authored
514 { \
235386b Zeev Suraski Change ALLOC_ZVAL() semantics
zsuraski authored
515 zval *var; \
516 ALLOC_ZVAL(var); \
4f6c95d Zeev Suraski Whitespace
zsuraski authored
517 ZVAL_DOUBLE(var, v); \
48ffdd7 Zeev Suraski * Setting variables in the global scope wasn't handling is_ref's properl...
zsuraski authored
518 ZEND_SET_GLOBAL_VAR(n, var); \
519 } \
1f985ed Zeev Suraski Moved all #define's for SET_ and RETURN_ to zend_API.h
zsuraski authored
520 }
521
522
c34560b andigutmans - Remove _EX and make it the old _LENGTH
andigutmans authored
523 #define ZEND_SET_SYMBOL(symtable, name, var) \
524 { \
525 char *_name = (name); \
526 \
4c8259b andigutmans - Call ZEND_SET_SYMBOL_WITH_LENGTH() with refcount 1 from the standard
andigutmans authored
527 ZEND_SET_SYMBOL_WITH_LENGTH(symtable, _name, strlen(_name)+1, var, 1, 0); \
48ffdd7 Zeev Suraski * Setting variables in the global scope wasn't handling is_ref's properl...
zsuraski authored
528 }
529
c34560b andigutmans - Remove _EX and make it the old _LENGTH
andigutmans authored
530 #define ZEND_SET_SYMBOL_WITH_LENGTH(symtable, name, name_length, var, _refcount, _is_ref) \
48ffdd7 Zeev Suraski * Setting variables in the global scope wasn't handling is_ref's properl...
zsuraski authored
531 { \
532 zval **orig_var; \
533 \
620d013 Zeev Suraski Support symbols in any symbol table, not just the active one
zsuraski authored
534 if (zend_hash_find(symtable, (name), (name_length), (void **) &orig_var)==SUCCESS \
48ffdd7 Zeev Suraski * Setting variables in the global scope wasn't handling is_ref's properl...
zsuraski authored
535 && PZVAL_IS_REF(*orig_var)) { \
158088c Zeev Suraski Allow to set the reference count explicitly for ZEND_SET_SYMBOL_WITH_LEN...
zsuraski authored
536 (var)->refcount = (*orig_var)->refcount; \
52a30fd Be safe, use ().
Andrei Zmievski authored
537 (var)->is_ref = 1; \
48ffdd7 Zeev Suraski * Setting variables in the global scope wasn't handling is_ref's properl...
zsuraski authored
538 \
2ddc4fe Zeev Suraski Make it possible to explicitly set refcount in ZEND_SET_SYMBOL_WITH_LENG...
zsuraski authored
539 if (_refcount) { \
540 (var)->refcount += _refcount-1; \
541 } \
48ffdd7 Zeev Suraski * Setting variables in the global scope wasn't handling is_ref's properl...
zsuraski authored
542 zval_dtor(*orig_var); \
158088c Zeev Suraski Allow to set the reference count explicitly for ZEND_SET_SYMBOL_WITH_LEN...
zsuraski authored
543 **orig_var = *(var); \
62b2087 andigutmans - Create two new macro's. ALLOC_ZVAL() and FREE_ZVAL(z) and make Zend us...
andigutmans authored
544 FREE_ZVAL(var); \
48ffdd7 Zeev Suraski * Setting variables in the global scope wasn't handling is_ref's properl...
zsuraski authored
545 } else { \
2f5efbd andigutmans - Add _EX macro for Andrei
andigutmans authored
546 (var)->is_ref = _is_ref; \
158088c Zeev Suraski Allow to set the reference count explicitly for ZEND_SET_SYMBOL_WITH_LEN...
zsuraski authored
547 if (_refcount) { \
548 (var)->refcount = _refcount; \
549 } \
550 zend_hash_update(symtable, (name), (name_length), &(var), sizeof(zval *), NULL); \
48ffdd7 Zeev Suraski * Setting variables in the global scope wasn't handling is_ref's properl...
zsuraski authored
551 } \
552 }
553
620d013 Zeev Suraski Support symbols in any symbol table, not just the active one
zsuraski authored
554
555 #define ZEND_SET_GLOBAL_VAR(name, var) \
556 ZEND_SET_SYMBOL(&EG(symbol_table), name, var)
557
e345066 *** empty log message ***
Andrei Zmievski authored
558 #define ZEND_SET_GLOBAL_VAR_WITH_LENGTH(name, name_length, var, _refcount, _is_ref) \
559 ZEND_SET_SYMBOL_WITH_LENGTH(&EG(symbol_table), name, name_length, var, _refcount, _is_ref)
fec413c Added ZEND_SET_GLOBAL_VAR_WITH_LENGTH_EX() macro.
Andrei Zmievski authored
560
0229aad reverted at Andi's request. replaced with more generic wrapper.
George Schlossnagle authored
561 #define ZEND_DEFINE_PROPERTY(class_ptr, name, value, mask) \
1343385 Zeev Suraski Rework zend_do_declare_property and related code into one code base
zsuraski authored
562 { \
563 char *_name = (name); \
564 int namelen = strlen(_name); \
7bbbd50 Fix handling of static properties initialized to arrays
Marcus Boerger authored
565 zend_declare_property(class_ptr, _name, namelen, value, mask TSRMLS_CC); \
daf3ac6 add convenience functions or adding class properties. Ok'd for commit b...
George Schlossnagle authored
566 }
567
6608f07 Stanislav Malyshev Mega-commit: Enter the new object model
smalyshev authored
568 #define HASH_OF(p) ((p)->type==IS_ARRAY ? (p)->value.ht : (((p)->type==IS_OBJECT ? Z_OBJ_HT_P(p)->get_properties((p) TSRMLS_CC) : NULL)))
af22085 added ZVAL_*() macros.
Thies C. Arntzen authored
569 #define ZVAL_IS_NULL(z) ((z)->type==IS_NULL)
06a18f1 andigutmans - Add some internal functions to Zend
andigutmans authored
570
8b6f848 andigutmans - Merge from Engine 1
andigutmans authored
571 /* For compatibility */
572 #define ZEND_MINIT ZEND_MODULE_STARTUP_N
573 #define ZEND_MSHUTDOWN ZEND_MODULE_SHUTDOWN_N
574 #define ZEND_RINIT ZEND_MODULE_ACTIVATE_N
575 #define ZEND_RSHUTDOWN ZEND_MODULE_DEACTIVATE_N
576 #define ZEND_MINFO ZEND_MODULE_INFO_N
577
578 #define ZEND_MINIT_FUNCTION ZEND_MODULE_STARTUP_D
f5c5986 Stanislav Malyshev _FUNCTION is used in definition, so use _D
smalyshev authored
579 #define ZEND_MSHUTDOWN_FUNCTION ZEND_MODULE_SHUTDOWN_D
580 #define ZEND_RINIT_FUNCTION ZEND_MODULE_ACTIVATE_D
581 #define ZEND_RSHUTDOWN_FUNCTION ZEND_MODULE_DEACTIVATE_D
582 #define ZEND_MINFO_FUNCTION ZEND_MODULE_INFO_D
8b6f848 andigutmans - Merge from Engine 1
andigutmans authored
583
0450ab9 Zeev Suraski MFZE1 (Expose more C++ APIs)
zsuraski authored
584 END_EXTERN_C()
585
b982307 Change header protection macros to conform to standard.
Sascha Schumann authored
586 #endif /* ZEND_API_H */
573b460 andigutmans Zend Library
andigutmans authored
587
8b6f848 andigutmans - Merge from Engine 1
andigutmans authored
588
573b460 andigutmans Zend Library
andigutmans authored
589 /*
590 * Local variables:
591 * tab-width: 4
592 * c-basic-offset: 4
333406b - Added some missing CVS $Id$ tags, headers and footers.
foobar authored
593 * indent-tabs-mode: t
573b460 andigutmans Zend Library
andigutmans authored
594 * End:
595 */
Something went wrong with that request. Please try again.