Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Newer
Older
100644 532 lines (435 sloc) 25.757 kb
573b460 andigutmans Zend Library
andigutmans authored
1 /*
2 +----------------------------------------------------------------------+
3 | Zend Engine |
4 +----------------------------------------------------------------------+
2c5d4b8 Bump year.
Sebastian Bergmann authored
5 | Copyright (c) 1998-2003 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)
c21d597 Add method alias macro
Marcus Boerger authored
56 #define ZEND_MALIAS(name, classname, alias, arg_info, flags) \
57 ZEND_FENTRY(name, ZEND_FN(classname##_##alias), arg_info, flags)
f8bbafd Zeev Suraski ntroduce infrastructure for supplying information about arguments,
zsuraski authored
58
59 #define ZEND_ARG_INFO(pass_by_ref, name) { #name, sizeof(#name)-1, NULL, 0, 0, pass_by_ref },
60 #define ZEND_ARG_PASS_INFO(pass_by_ref) { NULL, 0, NULL, 0, 0, pass_by_ref },
61 #define ZEND_ARG_OBJ_INFO(pass_by_ref, name, classname, allow_null) { #name, sizeof(#name)-1, #classname, sizeof(#classname)-1, allow_null, pass_by_ref },
62 #define ZEND_BEGIN_ARG_INFO(name, pass_rest_by_reference) \
63 zend_arg_info name[] = { \
64 ZEND_ARG_PASS_INFO(pass_rest_by_reference)
65 #define ZEND_END_ARG_INFO() };
342c6e0 Zeev Suraski Whatnot:
zsuraski authored
66
8b6f848 andigutmans - Merge from Engine 1
andigutmans authored
67 /* Name macros */
68 #define ZEND_MODULE_STARTUP_N(module) zm_startup_##module
69 #define ZEND_MODULE_SHUTDOWN_N(module) zm_shutdown_##module
70 #define ZEND_MODULE_ACTIVATE_N(module) zm_activate_##module
71 #define ZEND_MODULE_DEACTIVATE_N(module) zm_deactivate_##module
2fd4ffc Zeev Suraski Add exec_finished() callback for modules - this is the last place where ...
zsuraski authored
72 #define ZEND_MODULE_EXEC_FINISHED_N(module) zm_exec_finished_##module
8b6f848 andigutmans - Merge from Engine 1
andigutmans authored
73 #define ZEND_MODULE_INFO_N(module) zm_info_##module
342c6e0 Zeev Suraski Whatnot:
zsuraski authored
74
8b6f848 andigutmans - Merge from Engine 1
andigutmans authored
75 /* Declaration macros */
76 #define ZEND_MODULE_STARTUP_D(module) int ZEND_MODULE_STARTUP_N(module)(INIT_FUNC_ARGS)
77 #define ZEND_MODULE_SHUTDOWN_D(module) int ZEND_MODULE_SHUTDOWN_N(module)(SHUTDOWN_FUNC_ARGS)
78 #define ZEND_MODULE_ACTIVATE_D(module) int ZEND_MODULE_ACTIVATE_N(module)(INIT_FUNC_ARGS)
79 #define ZEND_MODULE_DEACTIVATE_D(module) int ZEND_MODULE_DEACTIVATE_N(module)(SHUTDOWN_FUNC_ARGS)
2fd4ffc Zeev Suraski Add exec_finished() callback for modules - this is the last place where ...
zsuraski authored
80 #define ZEND_MODULE_EXEC_FINISHED_D(module) int ZEND_MODULE_EXEC_FINISHED_N(module)(void)
8b6f848 andigutmans - Merge from Engine 1
andigutmans authored
81 #define ZEND_MODULE_INFO_D(module) void ZEND_MODULE_INFO_N(module)(ZEND_MODULE_INFO_FUNC_ARGS)
342c6e0 Zeev Suraski Whatnot:
zsuraski authored
82
0b6d923 Add ZEND_GET_MODULE(name). This is a short-cut for the common
Sascha Schumann authored
83 #define ZEND_GET_MODULE(name) \
cb71ac0 C++ compile fixes
Hartmut Holzgraefe authored
84 BEGIN_EXTERN_C()\
85 ZEND_DLEXPORT zend_module_entry *get_module(void) { return &name##_module_entry; }\
86 END_EXTERN_C()
0d21940 Zeev Suraski Generalize some common thread-safety stuff
zsuraski authored
87
88 #define ZEND_BEGIN_MODULE_GLOBALS(module_name) \
89 typedef struct _zend_##module_name##_globals {
90 #define ZEND_END_MODULE_GLOBALS(module_name) \
91 } zend_##module_name##_globals;
92
93 #ifdef ZTS
94
95 #define ZEND_DECLARE_MODULE_GLOBALS(module_name) \
02af513 andigutmans - Patch from Jason Greene.
andigutmans authored
96 ts_rsrc_id module_name##_globals_id;
97 #define ZEND_EXTERN_MODULE_GLOBALS(module_name) \
98 extern ts_rsrc_id module_name##_globals_id;
0d21940 Zeev Suraski Generalize some common thread-safety stuff
zsuraski authored
99 #define ZEND_INIT_MODULE_GLOBALS(module_name, globals_ctor, globals_dtor) \
2c254ba Zeev Suraski Get rid of ELS_*(), and use TSRMLS_*() instead.
zsuraski authored
100 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
101
102 #else
103
104 #define ZEND_DECLARE_MODULE_GLOBALS(module_name) \
02af513 andigutmans - Patch from Jason Greene.
andigutmans authored
105 zend_##module_name##_globals module_name##_globals;
106 #define ZEND_EXTERN_MODULE_GLOBALS(module_name) \
107 extern zend_##module_name##_globals module_name##_globals;
0d21940 Zeev Suraski Generalize some common thread-safety stuff
zsuraski authored
108 #define ZEND_INIT_MODULE_GLOBALS(module_name, globals_ctor, globals_dtor) \
109 globals_ctor(&module_name##_globals);
110
111 #endif
112
113
114
3738a6e only check for an available class entry instead of
Harald Radi authored
115 #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
116
117 #define INIT_OVERLOADED_CLASS_ENTRY(class_container, class_name, functions, handle_fcall, handle_propget, handle_propset) \
118 { \
119 class_container.name = strdup(class_name); \
b1b8ed6 Revert to sizeof()
Marcus Boerger authored
120 class_container.name_length = sizeof(class_name) - 1; \
741b816 Zeev Suraski * Support getThis() for internal functions.
zsuraski authored
121 class_container.builtin_functions = functions; \
2eccd95 andigutmans - Add some initializations
andigutmans authored
122 class_container.constructor = NULL; \
73b159e andigutmans - Experimental support for destructors. We need to see if destructors
andigutmans authored
123 class_container.destructor = NULL; \
29ea3da andigutmans - Pretty much finish _clone() support
andigutmans authored
124 class_container.clone = NULL; \
6608f07 Stanislav Malyshev Mega-commit: Enter the new object model
smalyshev authored
125 class_container.create_object = NULL; \
3c62b3b Expand Interface C API.
Marcus Boerger authored
126 class_container.interface_gets_implemented = NULL; \
2ae8d12 Stanislav Malyshev Remove handle_property from here too
smalyshev authored
127 class_container.__call = handle_fcall; \
128 class_container.__get = handle_propget; \
129 class_container.__set = handle_propset; \
25aa8b7 Added c-api for iterators
Marcus Boerger authored
130 class_container.num_interfaces = 0; \
131 class_container.get_iterator = NULL; \
b0b8254 Fix class/iterator relationship & handling
Marcus Boerger authored
132 class_container.iterator_funcs.funcs = NULL; \
741b816 Zeev Suraski * Support getThis() for internal functions.
zsuraski authored
133 }
134
573b460 andigutmans Zend Library
andigutmans authored
135 int zend_next_free_module(void);
136
f77e6a4 Zeev Suraski Generalize macros
zsuraski authored
137 ZEND_API int zend_get_parameters(int ht, int param_count, ...);
11e5d2f Zeev Suraski Get rid of more TSRMLS_FETCH's
zsuraski authored
138 ZEND_API int _zend_get_parameters_array(int ht, int param_count, zval **argument_array TSRMLS_DC);
f77e6a4 Zeev Suraski Generalize macros
zsuraski authored
139 ZEND_API int zend_get_parameters_ex(int param_count, ...);
11e5d2f Zeev Suraski Get rid of more TSRMLS_FETCH's
zsuraski authored
140 ZEND_API int _zend_get_parameters_array_ex(int param_count, zval ***argument_array TSRMLS_DC);
141
142 #define zend_get_parameters_array(ht, param_count, argument_array) \
143 _zend_get_parameters_array(ht, param_count, argument_array TSRMLS_CC)
144 #define zend_get_parameters_array_ex(param_count, argument_array) \
145 _zend_get_parameters_array_ex(param_count, argument_array TSRMLS_CC)
39f9487 andigutmans -Tiny patches
andigutmans authored
146
58f8805 Adding new parameter parsing API.
Andrei Zmievski authored
147
148 /* Parameter parsing API -- andrei */
149
150 #define ZEND_PARSE_PARAMS_QUIET 1<<1
8ce8324 Zeev Suraski More TSRMLS_FETCH annihilation
zsuraski authored
151 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
152 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
153 ZEND_API char *zend_zval_type_name(zval *arg);
58f8805 Adding new parameter parsing API.
Andrei Zmievski authored
154
325f9ed fixed zend_parse_method_param
Georg Richter authored
155 ZEND_API int zend_parse_method_parameters(int num_args TSRMLS_DC, zval *this_ptr, char *type_spec, ...);
c4528f8 extend the parameter parsing API by two functions
Harald Radi authored
156 ZEND_API int zend_parse_method_parameters_ex(int flags, int num_args TSRMLS_DC, zval *this_ptr, char *type_spec, zend_class_entry *ce, void **object, ...);
157
b525549 Zeev Suraski More TSRMLS_FETCH work, and get rid of redundant ParametersPassedByRef
zsuraski authored
158 /* End of parameter parsing API -- andrei */
39f9487 andigutmans -Tiny patches
andigutmans authored
159
e8214a3 andigutmans - Commit Marcus' cleanup of abstract and static inheritance and improve
andigutmans authored
160 int zend_register_functions(zend_class_entry *scope, zend_function_entry *functions, HashTable *function_table, int type TSRMLS_DC);
b577038 Zeev Suraski Avoid TSRMLS_FETCH()'s (still lots of work left)
zsuraski authored
161 void zend_unregister_functions(zend_function_entry *functions, int count, HashTable *function_table TSRMLS_DC);
7a87fcb Zeev Suraski Thread safety patch. We're still not quite there but it compiles again,...
zsuraski authored
162 ZEND_API int zend_register_module(zend_module_entry *module_entry);
eb0e694 andigutmans - Andrei, this is for you!
andigutmans authored
163
b577038 Zeev Suraski Avoid TSRMLS_FETCH()'s (still lots of work left)
zsuraski authored
164 ZEND_API zend_class_entry *zend_register_internal_class(zend_class_entry *class_entry TSRMLS_DC);
165 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
166 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
167 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
168
d76cf1d Zeev Suraski More TSRMLS_FETCH work
zsuraski authored
169 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
170 ZEND_API int zend_disable_class(char *class_name, uint class_name_length TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
171
4187439 Zeev Suraski More TSRMLS_FETCH work
zsuraski authored
172 ZEND_API void zend_wrong_param_count(TSRMLS_D);
13148b5 Improve zend_is_callable() to the point where it's actually useful.
Andrei Zmievski authored
173 ZEND_API zend_bool zend_is_callable(zval *callable, zend_bool syntax_only, char **callable_name);
26bfe3f Add zend_make_callable() which allows to make zval's callable zval's.
Marcus Boerger authored
174 ZEND_API zend_bool zend_make_callable(zval *callable, char **callable_name TSRMLS_DC);
0185071 MFZE1: Introduced extension version numbers (Stig)
Sebastian Bergmann authored
175 ZEND_API char *zend_get_module_version(char *module_name);
7bbbd50 Fix handling of static properties initialized to arrays
Marcus Boerger authored
176 ZEND_API int zend_declare_property(zend_class_entry *ce, char *name, int name_length, zval *property, int access_type TSRMLS_DC);
177 ZEND_API int zend_declare_property_null(zend_class_entry *ce, char *name, int name_length, int access_type TSRMLS_DC);
178 ZEND_API int zend_declare_property_long(zend_class_entry *ce, char *name, int name_length, long value, int access_type TSRMLS_DC);
179 ZEND_API int zend_declare_property_string(zend_class_entry *ce, char *name, int name_length, char *value, int access_type TSRMLS_DC);
1343385 Zeev Suraski Rework zend_do_declare_property and related code into one code base
zsuraski authored
180
baaa4c9 Internal classes can now have default properties.
Marcus Boerger authored
181 ZEND_API void zend_update_property(zend_class_entry *scope, zval *object, char *name, int name_length, zval *value TSRMLS_DC);
182 ZEND_API void zend_update_property_null(zend_class_entry *scope, zval *object, char *name, int name_length TSRMLS_DC);
183 ZEND_API void zend_update_property_long(zend_class_entry *scope, zval *object, char *name, int name_length, long value TSRMLS_DC);
184 ZEND_API void zend_update_property_string(zend_class_entry *scope, zval *object, char *name, int name_length, char *value TSRMLS_DC);
573b460 andigutmans Zend Library
andigutmans authored
185
38805f2 Add property read code and use that in default exception class
Marcus Boerger authored
186 ZEND_API zval *zend_read_property(zend_class_entry *scope, zval *object, char *name, int name_length, zend_bool silent TSRMLS_DC);
187
3fc8528 Eliminate TSRMLS_FETCH() calls in destroy_op_array() and zend_get_class_...
Sebastian Bergmann authored
188 ZEND_API zend_class_entry *zend_get_class_entry(zval *zobject TSRMLS_DC);
6ac6cb1 added get_class_entry callback handler to the
Harald Radi authored
189
741b816 Zeev Suraski * Support getThis() for internal functions.
zsuraski authored
190 #define getThis() (this_ptr)
191
131d9cb Zeev Suraski *** empty log message ***
zsuraski authored
192 #define WRONG_PARAM_COUNT ZEND_WRONG_PARAM_COUNT()
193 #define WRONG_PARAM_COUNT_WITH_RETVAL(ret) ZEND_WRONG_PARAM_COUNT_WITH_RETVAL(ret)
a1ad287 Zeev Suraski - The tree compiles again
zsuraski authored
194 #define ARG_COUNT(dummy) (ht)
195 #define ZEND_NUM_ARGS() (ht)
4187439 Zeev Suraski More TSRMLS_FETCH work
zsuraski authored
196 #define ZEND_WRONG_PARAM_COUNT() { zend_wrong_param_count(TSRMLS_C); return; }
197 #define ZEND_WRONG_PARAM_COUNT_WITH_RETVAL(ret) { zend_wrong_param_count(TSRMLS_C); return ret; }
573b460 andigutmans Zend Library
andigutmans authored
198
80bdd19 Zeev Suraski Fine tune Andi's patch
zsuraski authored
199 #ifndef ZEND_WIN32
573b460 andigutmans Zend Library
andigutmans authored
200 #define DLEXPORT
201 #endif
202
e062843 *** empty log message ***
Andrei Zmievski authored
203 ZEND_API int zend_startup_module(zend_module_entry *module);
573b460 andigutmans Zend Library
andigutmans authored
204
ceba50b Zeev Suraski - Fix a nasty bug in the hash, introduced in the recent migration to mac...
zsuraski authored
205 #define array_init(arg) _array_init((arg) ZEND_FILE_LINE_CC)
fcc0351 Zeev Suraski TSRMLS_FETCH work
zsuraski authored
206 #define object_init(arg) _object_init((arg) ZEND_FILE_LINE_CC TSRMLS_CC)
207 #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
208 #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
209 ZEND_API int _array_init(zval *arg ZEND_FILE_LINE_DC);
fcc0351 Zeev Suraski TSRMLS_FETCH work
zsuraski authored
210 ZEND_API int _object_init(zval *arg ZEND_FILE_LINE_DC TSRMLS_DC);
211 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
212 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
213
047a574 - Add zend_merge_properties() which is designed to serve *_fetch_object(...
Marcus Boerger authored
214 ZEND_API void zend_merge_properties(zval *obj, HashTable *properties, int destroy_ht TSRMLS_DC);
215
6847fef added add_*_resource() and add_*_bool() functions
Thies C. Arntzen authored
216 /* no longer supported */
4f6c95d Zeev Suraski Whitespace
zsuraski authored
217 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
218
ef95a34 andigutmans - Patch from Sterling. Add API calls to add zval's as array indeces/
andigutmans authored
219 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
220 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
221 ZEND_API int add_assoc_bool_ex(zval *arg, char *key, uint key_len, int b);
222 ZEND_API int add_assoc_resource_ex(zval *arg, char *key, uint key_len, int r);
223 ZEND_API int add_assoc_double_ex(zval *arg, char *key, uint key_len, double d);
224 ZEND_API int add_assoc_string_ex(zval *arg, char *key, uint key_len, char *str, int duplicate);
225 ZEND_API int add_assoc_stringl_ex(zval *arg, char *key, uint key_len, char *str, uint length, int duplicate);
226 ZEND_API int add_assoc_zval_ex(zval *arg, char *key, uint key_len, zval *value);
227
228 #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
229 #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
230 #define add_assoc_bool(__arg, __key, __b) add_assoc_bool_ex(__arg, __key, strlen(__key)+1, __b)
231 #define add_assoc_resource(__arg, __key, __r) add_assoc_resource_ex(__arg, __key, strlen(__key)+1, __r)
232 #define add_assoc_double(__arg, __key, __d) add_assoc_double_ex(__arg, __key, strlen(__key)+1, __d)
233 #define add_assoc_string(__arg, __key, __str, __duplicate) add_assoc_string_ex(__arg, __key, strlen(__key)+1, __str, __duplicate)
234 #define add_assoc_stringl(__arg, __key, __str, __length, __duplicate) add_assoc_stringl_ex(__arg, __key, strlen(__key)+1, __str, __length, __duplicate)
235 #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
236
0611acb andigutmans - Change unset() functions to null(). unset() is legacy
andigutmans authored
237 /* unset() functions are only suported for legacy modules and null() functions should be used */
238 #define add_assoc_unset(__arg, __key) add_assoc_null_ex(__arg, __key, strlen(__key) + 1)
239 #define add_index_unset(__arg, __key) add_index_null(__arg, __key)
240 #define add_next_index_unset(__arg) add_next_index_null(__arg)
241 #define add_property_unset(__arg, __key) add_property_null(__arg, __key)
242
573b460 andigutmans Zend Library
andigutmans authored
243 ZEND_API int add_index_long(zval *arg, uint idx, long n);
0611acb andigutmans - Change unset() functions to null(). unset() is legacy
andigutmans authored
244 ZEND_API int add_index_null(zval *arg, uint idx);
6847fef added add_*_resource() and add_*_bool() functions
Thies C. Arntzen authored
245 ZEND_API int add_index_bool(zval *arg, uint idx, int b);
246 ZEND_API int add_index_resource(zval *arg, uint idx, int r);
573b460 andigutmans Zend Library
andigutmans authored
247 ZEND_API int add_index_double(zval *arg, uint idx, double d);
248 ZEND_API int add_index_string(zval *arg, uint idx, char *str, int duplicate);
249 ZEND_API int add_index_stringl(zval *arg, uint idx, char *str, uint length, int duplicate);
57f9963 Make add_index_zval() available to the outside world.
Andrei Zmievski authored
250 ZEND_API int add_index_zval(zval *arg, uint index, zval *value);
6847fef added add_*_resource() and add_*_bool() functions
Thies C. Arntzen authored
251
573b460 andigutmans Zend Library
andigutmans authored
252 ZEND_API int add_next_index_long(zval *arg, long n);
0611acb andigutmans - Change unset() functions to null(). unset() is legacy
andigutmans authored
253 ZEND_API int add_next_index_null(zval *arg);
6847fef added add_*_resource() and add_*_bool() functions
Thies C. Arntzen authored
254 ZEND_API int add_next_index_bool(zval *arg, int b);
255 ZEND_API int add_next_index_resource(zval *arg, int r);
573b460 andigutmans Zend Library
andigutmans authored
256 ZEND_API int add_next_index_double(zval *arg, double d);
257 ZEND_API int add_next_index_string(zval *arg, char *str, int duplicate);
258 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
259 ZEND_API int add_next_index_zval(zval *arg, zval *value);
260
261 ZEND_API int add_get_assoc_string_ex(zval *arg, char *key, uint key_len, char *str, void **dest, int duplicate);
262 ZEND_API int add_get_assoc_stringl_ex(zval *arg, char *key, uint key_len, char *str, uint length, void **dest, int duplicate);
263
264 #define add_get_assoc_string(__arg, __key, __str, __dest, __duplicate) add_get_assoc_string_ex(__arg, __key, strlen(__key)+1, __str, __dest, __duplicate)
265 #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
266
267 ZEND_API int add_get_index_long(zval *arg, uint idx, long l, void **dest);
268 ZEND_API int add_get_index_double(zval *arg, uint idx, double d, void **dest);
269 ZEND_API int add_get_index_string(zval *arg, uint idx, char *str, void **dest, int duplicate);
270 ZEND_API int add_get_index_stringl(zval *arg, uint idx, char *str, uint length, void **dest, int duplicate);
271
eccc536 Stanislav Malyshev Make add_property_ functions work via write_property handler
smalyshev authored
272 ZEND_API int add_property_long_ex(zval *arg, char *key, uint key_len, long l TSRMLS_DC);
273 ZEND_API int add_property_null_ex(zval *arg, char *key, uint key_len TSRMLS_DC);
274 ZEND_API int add_property_bool_ex(zval *arg, char *key, uint key_len, int b TSRMLS_DC);
275 ZEND_API int add_property_resource_ex(zval *arg, char *key, uint key_len, long r TSRMLS_DC);
276 ZEND_API int add_property_double_ex(zval *arg, char *key, uint key_len, double d TSRMLS_DC);
277 ZEND_API int add_property_string_ex(zval *arg, char *key, uint key_len, char *str, int duplicate TSRMLS_DC);
278 ZEND_API int add_property_stringl_ex(zval *arg, char *key, uint key_len, char *str, uint length, int duplicate TSRMLS_DC);
279 ZEND_API int add_property_zval_ex(zval *arg, char *key, uint key_len, zval *value TSRMLS_DC);
280
281 #define add_property_long(__arg, __key, __n) add_property_long_ex(__arg, __key, strlen(__key)+1, __n TSRMLS_CC)
282 #define add_property_null(__arg, __key) add_property_null_ex(__arg, __key, strlen(__key) + 1 TSRMLS_CC)
283 #define add_property_bool(__arg, __key, __b) add_property_bool_ex(__arg, __key, strlen(__key)+1, __b TSRMLS_CC)
284 #define add_property_resource(__arg, __key, __r) add_property_resource_ex(__arg, __key, strlen(__key)+1, __r TSRMLS_CC)
285 #define add_property_double(__arg, __key, __d) add_property_double_ex(__arg, __key, strlen(__key)+1, __d TSRMLS_CC)
286 #define add_property_string(__arg, __key, __str, __duplicate) add_property_string_ex(__arg, __key, strlen(__key)+1, __str, __duplicate TSRMLS_CC)
287 #define add_property_stringl(__arg, __key, __str, __length, __duplicate) add_property_stringl_ex(__arg, __key, strlen(__key)+1, __str, __length, __duplicate TSRMLS_CC)
288 #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
289
92b4013 Zeev Suraski Try to put an end to the endless number of call_user_function variants.
zsuraski authored
290
f8bbafd Zeev Suraski ntroduce infrastructure for supplying information about arguments,
zsuraski authored
291 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);
292 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);
92b4013 Zeev Suraski Try to put an end to the endless number of call_user_function variants.
zsuraski authored
293
294 typedef struct _zend_fcall_info {
295 size_t size;
296 HashTable *function_table;
297 zval *function_name;
298 HashTable *symbol_table;
299 zval **retval_ptr_ptr;
300 zend_uint param_count;
301 zval ***params;
302 zval **object_pp;
303 zend_bool no_separation;
304 } zend_fcall_info;
305
306 typedef struct _zend_fcall_info_cache {
307 zend_bool initialized;
308 zend_function *function_handler;
309 zend_class_entry *calling_scope;
310 zval **object_pp;
311 } zend_fcall_info_cache;
312
313 ZEND_API extern zend_fcall_info_cache empty_fcall_info_cache;
314
315 ZEND_API int zend_call_function(zend_fcall_info *fci, zend_fcall_info_cache *fci_cache TSRMLS_DC);
316
573b460 andigutmans Zend Library
andigutmans authored
317
f962a35 Added zend_set_hash_symbol() function.
Andrei Zmievski authored
318 ZEND_API int zend_set_hash_symbol(zval *symbol, char *name, int name_length,
51e797f some type cleanup work
Harald Radi authored
319 zend_bool is_ref, int num_symbol_tables, ...);
f962a35 Added zend_set_hash_symbol() function.
Andrei Zmievski authored
320
4f6c95d Zeev Suraski Whitespace
zsuraski authored
321 #define add_method(arg, key, method) add_assoc_function((arg), (key), (method))
573b460 andigutmans Zend Library
andigutmans authored
322
a35c61a MFZE1
Andrei Zmievski authored
323 ZEND_API ZEND_FUNCTION(display_disabled_function);
a700180 commiting zend_disable_class patch for George:
Harald Radi authored
324 ZEND_API ZEND_FUNCTION(display_disabled_class);
a35c61a MFZE1
Andrei Zmievski authored
325
bcddfd4 cleaned up the RETVAL_ RETURN_ and ZVAL_ macros
Thies C. Arntzen authored
326 #if ZEND_DEBUG
327 #define CHECK_ZVAL_STRING(z) \
ace55f3 Zeev Suraski Unify and make it easy to add code into the broken-string error handler
zsuraski authored
328 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
329 #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
330 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
331 #else
332 #define CHECK_ZVAL_STRING(z)
43ebb86 Zeev Suraski Fix bug #10287 - avoid crashing under a bogus usage of list()
zsuraski authored
333 #define CHECK_ZVAL_STRING_REL(z)
bcddfd4 cleaned up the RETVAL_ RETURN_ and ZVAL_ macros
Thies C. Arntzen authored
334 #endif
335
4f6c95d Zeev Suraski Whitespace
zsuraski authored
336 #define ZVAL_RESOURCE(z, l) { \
af22085 added ZVAL_*() macros.
Thies C. Arntzen authored
337 (z)->type = IS_RESOURCE; \
338 (z)->value.lval = l; \
339 }
bcddfd4 cleaned up the RETVAL_ RETURN_ and ZVAL_ macros
Thies C. Arntzen authored
340
4f6c95d Zeev Suraski Whitespace
zsuraski authored
341 #define ZVAL_BOOL(z, b) { \
af22085 added ZVAL_*() macros.
Thies C. Arntzen authored
342 (z)->type = IS_BOOL; \
05152d3 this little piggy broke lots of things...eg. _function_check_flag in ref...
Shane Caraveo authored
343 (z)->value.lval = ((b) != 0); \
af22085 added ZVAL_*() macros.
Thies C. Arntzen authored
344 }
bcddfd4 cleaned up the RETVAL_ RETURN_ and ZVAL_ macros
Thies C. Arntzen authored
345
af22085 added ZVAL_*() macros.
Thies C. Arntzen authored
346 #define ZVAL_NULL(z) { \
347 (z)->type = IS_NULL; \
348 }
bcddfd4 cleaned up the RETVAL_ RETURN_ and ZVAL_ macros
Thies C. Arntzen authored
349
4f6c95d Zeev Suraski Whitespace
zsuraski authored
350 #define ZVAL_LONG(z, l) { \
af22085 added ZVAL_*() macros.
Thies C. Arntzen authored
351 (z)->type = IS_LONG; \
352 (z)->value.lval = l; \
353 }
bcddfd4 cleaned up the RETVAL_ RETURN_ and ZVAL_ macros
Thies C. Arntzen authored
354
4f6c95d Zeev Suraski Whitespace
zsuraski authored
355 #define ZVAL_DOUBLE(z, d) { \
af22085 added ZVAL_*() macros.
Thies C. Arntzen authored
356 (z)->type = IS_DOUBLE; \
357 (z)->value.dval = d; \
358 }
bcddfd4 cleaned up the RETVAL_ RETURN_ and ZVAL_ macros
Thies C. Arntzen authored
359
4f6c95d Zeev Suraski Whitespace
zsuraski authored
360 #define ZVAL_STRING(z, s, duplicate) { \
af22085 added ZVAL_*() macros.
Thies C. Arntzen authored
361 char *__s=(s); \
362 (z)->value.str.len = strlen(__s); \
4f6c95d Zeev Suraski Whitespace
zsuraski authored
363 (z)->value.str.val = (duplicate?estrndup(__s, (z)->value.str.len):__s); \
af22085 added ZVAL_*() macros.
Thies C. Arntzen authored
364 (z)->type = IS_STRING; \
365 }
bcddfd4 cleaned up the RETVAL_ RETURN_ and ZVAL_ macros
Thies C. Arntzen authored
366
4f6c95d Zeev Suraski Whitespace
zsuraski authored
367 #define ZVAL_STRINGL(z, s, l, duplicate) { \
af22085 added ZVAL_*() macros.
Thies C. Arntzen authored
368 char *__s=(s); int __l=l; \
369 (z)->value.str.len = __l; \
4f6c95d Zeev Suraski Whitespace
zsuraski authored
370 (z)->value.str.val = (duplicate?estrndup(__s, __l):__s); \
af22085 added ZVAL_*() macros.
Thies C. Arntzen authored
371 (z)->type = IS_STRING; \
372 }
373
374 #define ZVAL_EMPTY_STRING(z) { \
375 (z)->value.str.len = 0; \
1f793fd Stanislav Malyshev Fix EMPTY_STRING macros
smalyshev authored
376 (z)->value.str.val = empty_string; \
af22085 added ZVAL_*() macros.
Thies C. Arntzen authored
377 (z)->type = IS_STRING; \
378 }
379
c7d27ad Add macros to return values of other zvals.
Marcus Boerger authored
380 #define ZVAL_ZVAL(z, zv, copy, dtor) { \
381 int is_ref, refcount; \
382 is_ref = (z)->is_ref; \
383 refcount = (z)->refcount; \
384 *(z) = *(zv); \
385 if (copy) { \
386 zval_copy_ctor(z); \
387 } \
388 if (dtor) { \
389 zval_ptr_dtor(zv); \
390 } \
391 (z)->is_ref = is_ref; \
392 (z)->refcount = refcount; \
393 }
394
4f6c95d Zeev Suraski Whitespace
zsuraski authored
395 #define ZVAL_FALSE(z) ZVAL_BOOL(z, 0)
396 #define ZVAL_TRUE(z) ZVAL_BOOL(z, 1)
af22085 added ZVAL_*() macros.
Thies C. Arntzen authored
397
4f6c95d Zeev Suraski Whitespace
zsuraski authored
398 #define RETVAL_RESOURCE(l) ZVAL_RESOURCE(return_value, l)
399 #define RETVAL_BOOL(b) ZVAL_BOOL(return_value, b)
bcddfd4 cleaned up the RETVAL_ RETURN_ and ZVAL_ macros
Thies C. Arntzen authored
400 #define RETVAL_NULL() ZVAL_NULL(return_value)
4f6c95d Zeev Suraski Whitespace
zsuraski authored
401 #define RETVAL_LONG(l) ZVAL_LONG(return_value, l)
402 #define RETVAL_DOUBLE(d) ZVAL_DOUBLE(return_value, d)
403 #define RETVAL_STRING(s, duplicate) ZVAL_STRING(return_value, s, duplicate)
404 #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
405 #define RETVAL_EMPTY_STRING() ZVAL_EMPTY_STRING(return_value)
c7d27ad Add macros to return values of other zvals.
Marcus Boerger authored
406 #define RETVAL_ZVAL(zv, copy, dtor) ZVAL_ZVAL(return_value, zv, copy, dtor)
4f6c95d Zeev Suraski Whitespace
zsuraski authored
407 #define RETVAL_FALSE ZVAL_BOOL(return_value, 0)
408 #define RETVAL_TRUE ZVAL_BOOL(return_value, 1)
bcddfd4 cleaned up the RETVAL_ RETURN_ and ZVAL_ macros
Thies C. Arntzen authored
409
410 #define RETURN_RESOURCE(l) { RETVAL_RESOURCE(l); return; }
411 #define RETURN_BOOL(b) { RETVAL_BOOL(b); return; }
412 #define RETURN_NULL() { RETVAL_NULL(); return;}
413 #define RETURN_LONG(l) { RETVAL_LONG(l); return; }
414 #define RETURN_DOUBLE(d) { RETVAL_DOUBLE(d); return; }
4f6c95d Zeev Suraski Whitespace
zsuraski authored
415 #define RETURN_STRING(s, duplicate) { RETVAL_STRING(s, duplicate); return; }
416 #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
417 #define RETURN_EMPTY_STRING() { RETVAL_EMPTY_STRING(); return; }
c7d27ad Add macros to return values of other zvals.
Marcus Boerger authored
418 #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
419 #define RETURN_FALSE { RETVAL_FALSE; return; }
420 #define RETURN_TRUE { RETVAL_TRUE; return; }
1f985ed Zeev Suraski Moved all #define's for SET_ and RETURN_ to zend_API.h
zsuraski authored
421
4f6c95d Zeev Suraski Whitespace
zsuraski authored
422 #define SET_VAR_STRING(n, v) { \
48ffdd7 Zeev Suraski * Setting variables in the global scope wasn't handling is_ref's properl...
zsuraski authored
423 { \
235386b Zeev Suraski Change ALLOC_ZVAL() semantics
zsuraski authored
424 zval *var; \
425 ALLOC_ZVAL(var); \
4f6c95d Zeev Suraski Whitespace
zsuraski authored
426 ZVAL_STRING(var, v, 0); \
6393ab1 Zeev Suraski Now that's an annoying bug.
zsuraski authored
427 ZEND_SET_GLOBAL_VAR(n, var); \
48ffdd7 Zeev Suraski * Setting variables in the global scope wasn't handling is_ref's properl...
zsuraski authored
428 } \
1f985ed Zeev Suraski Moved all #define's for SET_ and RETURN_ to zend_API.h
zsuraski authored
429 }
48ffdd7 Zeev Suraski * Setting variables in the global scope wasn't handling is_ref's properl...
zsuraski authored
430
4f6c95d Zeev Suraski Whitespace
zsuraski authored
431 #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
432 { \
235386b Zeev Suraski Change ALLOC_ZVAL() semantics
zsuraski authored
433 zval *var; \
434 ALLOC_ZVAL(var); \
4f6c95d Zeev Suraski Whitespace
zsuraski authored
435 ZVAL_STRINGL(var, v, l, 0); \
48ffdd7 Zeev Suraski * Setting variables in the global scope wasn't handling is_ref's properl...
zsuraski authored
436 ZEND_SET_GLOBAL_VAR(n, var); \
437 } \
1f985ed Zeev Suraski Moved all #define's for SET_ and RETURN_ to zend_API.h
zsuraski authored
438 }
48ffdd7 Zeev Suraski * Setting variables in the global scope wasn't handling is_ref's properl...
zsuraski authored
439
4f6c95d Zeev Suraski Whitespace
zsuraski authored
440 #define SET_VAR_LONG(n, v) { \
48ffdd7 Zeev Suraski * Setting variables in the global scope wasn't handling is_ref's properl...
zsuraski authored
441 { \
235386b Zeev Suraski Change ALLOC_ZVAL() semantics
zsuraski authored
442 zval *var; \
443 ALLOC_ZVAL(var); \
4f6c95d Zeev Suraski Whitespace
zsuraski authored
444 ZVAL_LONG(var, v); \
48ffdd7 Zeev Suraski * Setting variables in the global scope wasn't handling is_ref's properl...
zsuraski authored
445 ZEND_SET_GLOBAL_VAR(n, var); \
446 } \
1f985ed Zeev Suraski Moved all #define's for SET_ and RETURN_ to zend_API.h
zsuraski authored
447 }
48ffdd7 Zeev Suraski * Setting variables in the global scope wasn't handling is_ref's properl...
zsuraski authored
448
4f6c95d Zeev Suraski Whitespace
zsuraski authored
449 #define SET_VAR_DOUBLE(n, v) { \
48ffdd7 Zeev Suraski * Setting variables in the global scope wasn't handling is_ref's properl...
zsuraski authored
450 { \
235386b Zeev Suraski Change ALLOC_ZVAL() semantics
zsuraski authored
451 zval *var; \
452 ALLOC_ZVAL(var); \
4f6c95d Zeev Suraski Whitespace
zsuraski authored
453 ZVAL_DOUBLE(var, v); \
48ffdd7 Zeev Suraski * Setting variables in the global scope wasn't handling is_ref's properl...
zsuraski authored
454 ZEND_SET_GLOBAL_VAR(n, var); \
455 } \
1f985ed Zeev Suraski Moved all #define's for SET_ and RETURN_ to zend_API.h
zsuraski authored
456 }
457
458
c34560b andigutmans - Remove _EX and make it the old _LENGTH
andigutmans authored
459 #define ZEND_SET_SYMBOL(symtable, name, var) \
460 { \
461 char *_name = (name); \
462 \
4c8259b andigutmans - Call ZEND_SET_SYMBOL_WITH_LENGTH() with refcount 1 from the standard
andigutmans authored
463 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
464 }
465
c34560b andigutmans - Remove _EX and make it the old _LENGTH
andigutmans authored
466 #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
467 { \
468 zval **orig_var; \
469 \
620d013 Zeev Suraski Support symbols in any symbol table, not just the active one
zsuraski authored
470 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
471 && PZVAL_IS_REF(*orig_var)) { \
158088c Zeev Suraski Allow to set the reference count explicitly for ZEND_SET_SYMBOL_WITH_LEN...
zsuraski authored
472 (var)->refcount = (*orig_var)->refcount; \
52a30fd Be safe, use ().
Andrei Zmievski authored
473 (var)->is_ref = 1; \
48ffdd7 Zeev Suraski * Setting variables in the global scope wasn't handling is_ref's properl...
zsuraski authored
474 \
2ddc4fe Zeev Suraski Make it possible to explicitly set refcount in ZEND_SET_SYMBOL_WITH_LENG...
zsuraski authored
475 if (_refcount) { \
476 (var)->refcount += _refcount-1; \
477 } \
48ffdd7 Zeev Suraski * Setting variables in the global scope wasn't handling is_ref's properl...
zsuraski authored
478 zval_dtor(*orig_var); \
158088c Zeev Suraski Allow to set the reference count explicitly for ZEND_SET_SYMBOL_WITH_LEN...
zsuraski authored
479 **orig_var = *(var); \
62b2087 andigutmans - Create two new macro's. ALLOC_ZVAL() and FREE_ZVAL(z) and make Zend us...
andigutmans authored
480 FREE_ZVAL(var); \
48ffdd7 Zeev Suraski * Setting variables in the global scope wasn't handling is_ref's properl...
zsuraski authored
481 } else { \
2f5efbd andigutmans - Add _EX macro for Andrei
andigutmans authored
482 (var)->is_ref = _is_ref; \
158088c Zeev Suraski Allow to set the reference count explicitly for ZEND_SET_SYMBOL_WITH_LEN...
zsuraski authored
483 if (_refcount) { \
484 (var)->refcount = _refcount; \
485 } \
486 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
487 } \
488 }
489
620d013 Zeev Suraski Support symbols in any symbol table, not just the active one
zsuraski authored
490
491 #define ZEND_SET_GLOBAL_VAR(name, var) \
492 ZEND_SET_SYMBOL(&EG(symbol_table), name, var)
493
e345066 *** empty log message ***
Andrei Zmievski authored
494 #define ZEND_SET_GLOBAL_VAR_WITH_LENGTH(name, name_length, var, _refcount, _is_ref) \
495 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
496
0229aad reverted at Andi's request. replaced with more generic wrapper.
George Schlossnagle authored
497 #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
498 { \
499 char *_name = (name); \
500 int namelen = strlen(_name); \
7bbbd50 Fix handling of static properties initialized to arrays
Marcus Boerger authored
501 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
502 }
503
6608f07 Stanislav Malyshev Mega-commit: Enter the new object model
smalyshev authored
504 #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
505 #define ZVAL_IS_NULL(z) ((z)->type==IS_NULL)
06a18f1 andigutmans - Add some internal functions to Zend
andigutmans authored
506
8b6f848 andigutmans - Merge from Engine 1
andigutmans authored
507 /* For compatibility */
508 #define ZEND_MINIT ZEND_MODULE_STARTUP_N
509 #define ZEND_MSHUTDOWN ZEND_MODULE_SHUTDOWN_N
510 #define ZEND_RINIT ZEND_MODULE_ACTIVATE_N
511 #define ZEND_RSHUTDOWN ZEND_MODULE_DEACTIVATE_N
512 #define ZEND_MINFO ZEND_MODULE_INFO_N
513
514 #define ZEND_MINIT_FUNCTION ZEND_MODULE_STARTUP_D
f5c5986 Stanislav Malyshev _FUNCTION is used in definition, so use _D
smalyshev authored
515 #define ZEND_MSHUTDOWN_FUNCTION ZEND_MODULE_SHUTDOWN_D
516 #define ZEND_RINIT_FUNCTION ZEND_MODULE_ACTIVATE_D
517 #define ZEND_RSHUTDOWN_FUNCTION ZEND_MODULE_DEACTIVATE_D
518 #define ZEND_MINFO_FUNCTION ZEND_MODULE_INFO_D
8b6f848 andigutmans - Merge from Engine 1
andigutmans authored
519
0450ab9 Zeev Suraski MFZE1 (Expose more C++ APIs)
zsuraski authored
520 END_EXTERN_C()
521
b982307 Change header protection macros to conform to standard.
Sascha Schumann authored
522 #endif /* ZEND_API_H */
573b460 andigutmans Zend Library
andigutmans authored
523
8b6f848 andigutmans - Merge from Engine 1
andigutmans authored
524
573b460 andigutmans Zend Library
andigutmans authored
525 /*
526 * Local variables:
527 * tab-width: 4
528 * c-basic-offset: 4
333406b - Added some missing CVS $Id$ tags, headers and footers.
foobar authored
529 * indent-tabs-mode: t
573b460 andigutmans Zend Library
andigutmans authored
530 * End:
531 */
Something went wrong with that request. Please try again.