Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Newer
Older
100644 729 lines (604 sloc) 39.456 kb
573b460 @andigutmans Zend Library
andigutmans authored
1 /*
2 +----------------------------------------------------------------------+
3 | Zend Engine |
4 +----------------------------------------------------------------------+
d2281d1 sed -i "s#1998-2009#1998-2010#g" **/*.c **/*.h **/*.php
Sebastian Bergmann authored
5 | Copyright (c) 1998-2010 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, |
b489251 - MFH from HEAD:
Jani Taskinen 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 @zsuraski 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 @zsuraski 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"
5dba477 @zsuraski - Some header dependencies cleanup
zsuraski authored
28 #include "zend_operators.h"
29 #include "zend_variables.h"
df74f1d Add optional support for C0x inline semantics.
Sascha Schumann authored
30 #include "zend_execute.h"
573b460 @andigutmans Zend Library
andigutmans authored
31
0450ab9 @zsuraski MFZE1 (Expose more C++ APIs)
zsuraski authored
32
33 BEGIN_EXTERN_C()
e9d126a @andigutmans - Make sure zend_API.h has Zend'ish versions of the ZEND macros so that
andigutmans authored
34
f8bbafd @zsuraski ntroduce infrastructure for supplying information about arguments,
zsuraski authored
35 typedef struct _zend_function_entry {
6c810b0 Improved memory usage by movig constants to read only memory. (Dmitry…
Dmitry Stogov authored
36 const char *fname;
f8bbafd @zsuraski ntroduce infrastructure for supplying information about arguments,
zsuraski authored
37 void (*handler)(INTERNAL_FUNCTION_PARAMETERS);
6c810b0 Improved memory usage by movig constants to read only memory. (Dmitry…
Dmitry Stogov authored
38 const struct _zend_arg_info *arg_info;
f8bbafd @zsuraski ntroduce infrastructure for supplying information about arguments,
zsuraski authored
39 zend_uint num_args;
40 zend_uint flags;
41 } zend_function_entry;
42
feb8580 LSB parent/self forwarding
Dmitry Stogov authored
43 typedef struct _zend_fcall_info {
44 size_t size;
45 HashTable *function_table;
46 zval *function_name;
47 HashTable *symbol_table;
48 zval **retval_ptr_ptr;
49 zend_uint param_count;
50 zval ***params;
7d4fd3f Fixed bug #46409 (__invoke method called outside of object context wh…
Dmitry Stogov authored
51 zval *object_ptr;
feb8580 LSB parent/self forwarding
Dmitry Stogov authored
52 zend_bool no_separation;
53 } zend_fcall_info;
54
55 typedef struct _zend_fcall_info_cache {
56 zend_bool initialized;
57 zend_function *function_handler;
58 zend_class_entry *calling_scope;
59 zend_class_entry *called_scope;
7d4fd3f Fixed bug #46409 (__invoke method called outside of object context wh…
Dmitry Stogov authored
60 zval *object_ptr;
feb8580 LSB parent/self forwarding
Dmitry Stogov authored
61 } zend_fcall_info_cache;
62
7126de4 - Next step in namespaces, using / as namespace separator.
Marcus Boerger authored
63 #define ZEND_NS_NAME(ns, name) ns"\\"name
907fa66 Added API to use namesapces in internal extensions
Dmitry Stogov authored
64
f8bbafd @zsuraski ntroduce infrastructure for supplying information about arguments,
zsuraski authored
65 #define ZEND_FN(name) zif_##name
637a404 - MFH as discussed
Marcus Boerger authored
66 #define ZEND_MN(name) zim_##name
f8bbafd @zsuraski ntroduce infrastructure for supplying information about arguments,
zsuraski authored
67 #define ZEND_NAMED_FUNCTION(name) void name(INTERNAL_FUNCTION_PARAMETERS)
68 #define ZEND_FUNCTION(name) ZEND_NAMED_FUNCTION(ZEND_FN(name))
637a404 - MFH as discussed
Marcus Boerger authored
69 #define ZEND_METHOD(classname, name) ZEND_NAMED_FUNCTION(ZEND_MN(classname##_##name))
f8bbafd @zsuraski ntroduce infrastructure for supplying information about arguments,
zsuraski authored
70
1c2512d - Add fn_flag ZEND_ACC_ALIAS
Marcus Boerger authored
71 #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 },
72
1e19ee8 @bjori - Fixed incorrect function names on FreeBSD where inet_pton() was named
bjori authored
73 #define ZEND_RAW_FENTRY(zend_name, name, arg_info, flags) { zend_name, name, arg_info, (zend_uint) (sizeof(arg_info)/sizeof(struct _zend_arg_info)-1), flags },
74 #define ZEND_RAW_NAMED_FE(zend_name, name, arg_info) ZEND_RAW_FENTRY(#zend_name, name, arg_info, 0)
75
1c2512d - Add fn_flag ZEND_ACC_ALIAS
Marcus Boerger authored
76 #define ZEND_NAMED_FE(zend_name, name, arg_info) ZEND_FENTRY(zend_name, name, arg_info, 0)
77 #define ZEND_FE(name, arg_info) ZEND_FENTRY(name, ZEND_FN(name), arg_info, 0)
941b065 - MFH: Function deprecation flag
Marcus Boerger authored
78 #define ZEND_DEP_FE(name, arg_info) ZEND_FENTRY(name, ZEND_FN(name), arg_info, ZEND_ACC_DEPRECATED)
cec053f Don't identify alias'ed functions
Marcus Boerger authored
79 #define ZEND_FALIAS(name, alias, arg_info) ZEND_FENTRY(name, ZEND_FN(alias), arg_info, 0)
941b065 - MFH: Function deprecation flag
Marcus Boerger authored
80 #define ZEND_DEP_FALIAS(name, alias, arg_info) ZEND_FENTRY(name, ZEND_FN(alias), arg_info, ZEND_ACC_DEPRECATED)
637a404 - MFH as discussed
Marcus Boerger authored
81 #define ZEND_NAMED_ME(zend_name, name, arg_info, flags) ZEND_FENTRY(zend_name, name, arg_info, flags)
82 #define ZEND_ME(classname, name, arg_info, flags) ZEND_FENTRY(name, ZEND_MN(classname##_##name), arg_info, flags)
1c2512d - Add fn_flag ZEND_ACC_ALIAS
Marcus Boerger authored
83 #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
84 #define ZEND_MALIAS(classname, name, alias, arg_info, flags) \
637a404 - MFH as discussed
Marcus Boerger authored
85 ZEND_FENTRY(name, ZEND_MN(classname##_##alias), arg_info, flags)
86 #define ZEND_ME_MAPPING(name, func_name, arg_types, flags) ZEND_NAMED_ME(name, ZEND_FN(func_name), arg_types, flags)
f8bbafd @zsuraski ntroduce infrastructure for supplying information about arguments,
zsuraski authored
87
907fa66 Added API to use namesapces in internal extensions
Dmitry Stogov authored
88 #define ZEND_NS_FENTRY(ns, zend_name, name, arg_info, flags) ZEND_RAW_FENTRY(ZEND_NS_NAME(ns, #zend_name), name, arg_info, flags)
89
90 #define ZEND_NS_RAW_FENTRY(ns, zend_name, name, arg_info, flags) ZEND_RAW_FENTRY(ZEND_NS_NAME(ns, zend_name), name, arg_info, flags)
91 #define ZEND_NS_RAW_NAMED_FE(ns, zend_name, name, arg_info) ZEND_NS_RAW_FENTRY(ns, #zend_name, name, arg_info, 0)
92
f48cab0 - Fixed bug #48971 (Missing ZEND_NS_NAMED_FE macro)
Jani Taskinen authored
93 #define ZEND_NS_NAMED_FE(ns, zend_name, name, arg_info) ZEND_NS_FENTRY(ns, #zend_name, name, arg_info, 0)
907fa66 Added API to use namesapces in internal extensions
Dmitry Stogov authored
94 #define ZEND_NS_FE(ns, name, arg_info) ZEND_NS_FENTRY(ns, name, ZEND_FN(name), arg_info, 0)
95 #define ZEND_NS_DEP_FE(ns, name, arg_info) ZEND_NS_FENTRY(ns, name, ZEND_FN(name), arg_info, ZEND_ACC_DEPRECATED)
96 #define ZEND_NS_FALIAS(ns, name, alias, arg_info) ZEND_NS_FENTRY(ns, name, ZEND_FN(alias), arg_info, 0)
97 #define ZEND_NS_DEP_FALIAS(ns, name, alias, arg_info) ZEND_NS_FENTRY(ns, name, ZEND_FN(alias), arg_info, ZEND_ACC_DEPRECATED)
98
1a72341 Added array type hinting. (This patch requires full re-make)
Dmitry Stogov authored
99 #define ZEND_ARG_INFO(pass_by_ref, name) { #name, sizeof(#name)-1, NULL, 0, 0, 0, pass_by_ref, 0, 0 },
100 #define ZEND_ARG_PASS_INFO(pass_by_ref) { NULL, 0, NULL, 0, 0, 0, pass_by_ref, 0, 0 },
1bc9247 - Added scalar typehinting.
Derick Rethans authored
101 #define ZEND_ARG_OBJ_INFO(pass_by_ref, name, classname, allow_null) { #name, sizeof(#name)-1, #classname, sizeof(#classname)-1, IS_CLASS, allow_null, pass_by_ref, 0, 0 },
102 #define ZEND_ARG_ARRAY_INFO(pass_by_ref, name, allow_null) { #name, sizeof(#name)-1, NULL, 0, IS_ARRAY, allow_null, pass_by_ref, 0, 0 },
103 #define ZEND_ARG_TYPE_INFO(pass_by_ref, name, type_hint, allow_null) { #name, sizeof(#name)-1, NULL, 0, type_hint, allow_null, pass_by_ref, 0, 0 },
7086634 @zsuraski - Improve ARG_INFO() macros to support supplying required_num_args
zsuraski authored
104 #define ZEND_BEGIN_ARG_INFO_EX(name, pass_rest_by_reference, return_reference, required_num_args) \
fc2fb50 @felipensp - MFH: Added 'static' into ZEND_BEGIN_ARG_INFO_EX macro
felipensp authored
105 static const zend_arg_info name[] = { \
1a72341 Added array type hinting. (This patch requires full re-make)
Dmitry Stogov authored
106 { NULL, 0, NULL, 0, 0, 0, pass_rest_by_reference, return_reference, required_num_args },
e7e0f7d @zsuraski - Check return-by-reference bit when implementing interface prototypes
zsuraski authored
107 #define ZEND_BEGIN_ARG_INFO(name, pass_rest_by_reference) \
aedbdb0 Allowed return by refrence from internal functions
Dmitry Stogov authored
108 ZEND_BEGIN_ARG_INFO_EX(name, pass_rest_by_reference, ZEND_RETURN_VALUE, -1)
f8bbafd @zsuraski ntroduce infrastructure for supplying information about arguments,
zsuraski authored
109 #define ZEND_END_ARG_INFO() };
342c6e0 @zsuraski Whatnot:
zsuraski authored
110
8b6f848 @andigutmans - Merge from Engine 1
andigutmans authored
111 /* Name macros */
112 #define ZEND_MODULE_STARTUP_N(module) zm_startup_##module
113 #define ZEND_MODULE_SHUTDOWN_N(module) zm_shutdown_##module
114 #define ZEND_MODULE_ACTIVATE_N(module) zm_activate_##module
115 #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
116 #define ZEND_MODULE_POST_ZEND_DEACTIVATE_N(module) zm_post_zend_deactivate_##module
8b6f848 @andigutmans - Merge from Engine 1
andigutmans authored
117 #define ZEND_MODULE_INFO_N(module) zm_info_##module
ada4e50 MFH: Added automatic module globals management.
Dmitry Stogov authored
118 #define ZEND_MODULE_GLOBALS_CTOR_N(module) zm_globals_ctor_##module
119 #define ZEND_MODULE_GLOBALS_DTOR_N(module) zm_globals_dtor_##module
342c6e0 @zsuraski Whatnot:
zsuraski authored
120
8b6f848 @andigutmans - Merge from Engine 1
andigutmans authored
121 /* Declaration macros */
122 #define ZEND_MODULE_STARTUP_D(module) int ZEND_MODULE_STARTUP_N(module)(INIT_FUNC_ARGS)
123 #define ZEND_MODULE_SHUTDOWN_D(module) int ZEND_MODULE_SHUTDOWN_N(module)(SHUTDOWN_FUNC_ARGS)
124 #define ZEND_MODULE_ACTIVATE_D(module) int ZEND_MODULE_ACTIVATE_N(module)(INIT_FUNC_ARGS)
125 #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
126 #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
127 #define ZEND_MODULE_INFO_D(module) void ZEND_MODULE_INFO_N(module)(ZEND_MODULE_INFO_FUNC_ARGS)
ada4e50 MFH: Added automatic module globals management.
Dmitry Stogov authored
128 #define ZEND_MODULE_GLOBALS_CTOR_D(module) void ZEND_MODULE_GLOBALS_CTOR_N(module)(zend_##module##_globals *module##_globals TSRMLS_DC)
129 #define ZEND_MODULE_GLOBALS_DTOR_D(module) void ZEND_MODULE_GLOBALS_DTOR_N(module)(zend_##module##_globals *module##_globals TSRMLS_DC)
342c6e0 @zsuraski Whatnot:
zsuraski authored
130
0b6d923 Add ZEND_GET_MODULE(name). This is a short-cut for the common
Sascha Schumann authored
131 #define ZEND_GET_MODULE(name) \
cb71ac0 C++ compile fixes
Hartmut Holzgraefe authored
132 BEGIN_EXTERN_C()\
133 ZEND_DLEXPORT zend_module_entry *get_module(void) { return &name##_module_entry; }\
134 END_EXTERN_C()
0d21940 @zsuraski Generalize some common thread-safety stuff
zsuraski authored
135
136 #define ZEND_BEGIN_MODULE_GLOBALS(module_name) \
137 typedef struct _zend_##module_name##_globals {
138 #define ZEND_END_MODULE_GLOBALS(module_name) \
139 } zend_##module_name##_globals;
140
141 #ifdef ZTS
142
143 #define ZEND_DECLARE_MODULE_GLOBALS(module_name) \
02af513 @andigutmans - Patch from Jason Greene.
andigutmans authored
144 ts_rsrc_id module_name##_globals_id;
145 #define ZEND_EXTERN_MODULE_GLOBALS(module_name) \
146 extern ts_rsrc_id module_name##_globals_id;
0d21940 @zsuraski Generalize some common thread-safety stuff
zsuraski authored
147 #define ZEND_INIT_MODULE_GLOBALS(module_name, globals_ctor, globals_dtor) \
2c254ba @zsuraski Get rid of ELS_*(), and use TSRMLS_*() instead.
zsuraski authored
148 ts_allocate_id(&module_name##_globals_id, sizeof(zend_##module_name##_globals), (ts_allocate_ctor) globals_ctor, (ts_allocate_dtor) globals_dtor);
0d21940 @zsuraski Generalize some common thread-safety stuff
zsuraski authored
149
150 #else
151
152 #define ZEND_DECLARE_MODULE_GLOBALS(module_name) \
02af513 @andigutmans - Patch from Jason Greene.
andigutmans authored
153 zend_##module_name##_globals module_name##_globals;
154 #define ZEND_EXTERN_MODULE_GLOBALS(module_name) \
155 extern zend_##module_name##_globals module_name##_globals;
0d21940 @zsuraski Generalize some common thread-safety stuff
zsuraski authored
156 #define ZEND_INIT_MODULE_GLOBALS(module_name, globals_ctor, globals_dtor) \
157 globals_ctor(&module_name##_globals);
158
159 #endif
160
b489251 - MFH from HEAD:
Jani Taskinen authored
161 #define INIT_CLASS_ENTRY(class_container, class_name, functions) \
162 INIT_OVERLOADED_CLASS_ENTRY(class_container, class_name, functions, NULL, NULL, NULL)
741b816 @zsuraski * Support getThis() for internal functions.
zsuraski authored
163
b489251 - MFH from HEAD:
Jani Taskinen authored
164 #define INIT_CLASS_ENTRY_EX(class_container, class_name, class_name_len, functions) \
165 INIT_OVERLOADED_CLASS_ENTRY_EX(class_container, class_name, class_name_len, functions, NULL, NULL, NULL, NULL, NULL)
166
167 #define INIT_OVERLOADED_CLASS_ENTRY_EX(class_container, class_name, class_name_len, functions, handle_fcall, handle_propget, handle_propset, handle_propunset, handle_propisset) \
741b816 @zsuraski * Support getThis() for internal functions.
zsuraski authored
168 { \
b489251 - MFH from HEAD:
Jani Taskinen authored
169 int _len = class_name_len; \
170 class_container.name = zend_strndup(class_name, _len); \
171 class_container.name_length = _len; \
741b816 @zsuraski * Support getThis() for internal functions.
zsuraski authored
172 class_container.builtin_functions = functions; \
2eccd95 @andigutmans - Add some initializations
andigutmans authored
173 class_container.constructor = NULL; \
73b159e @andigutmans - Experimental support for destructors. We need to see if destructors
andigutmans authored
174 class_container.destructor = NULL; \
29ea3da @andigutmans - Pretty much finish _clone() support
andigutmans authored
175 class_container.clone = NULL; \
637a404 - MFH as discussed
Marcus Boerger authored
176 class_container.serialize = NULL; \
177 class_container.unserialize = NULL; \
178 class_container.create_object = NULL; \
3c62b3b Expand Interface C API.
Marcus Boerger authored
179 class_container.interface_gets_implemented = NULL; \
72d0454 Added support for __callstatic() magic method (missing part). (Sara)
Dmitry Stogov authored
180 class_container.get_static_method = NULL; \
637a404 - MFH as discussed
Marcus Boerger authored
181 class_container.__call = handle_fcall; \
b489251 - MFH from HEAD:
Jani Taskinen authored
182 class_container.__callstatic = NULL; \
637a404 - MFH as discussed
Marcus Boerger authored
183 class_container.__tostring = NULL; \
184 class_container.__get = handle_propget; \
185 class_container.__set = handle_propset; \
186 class_container.__unset = handle_propunset; \
187 class_container.__isset = handle_propisset; \
188 class_container.serialize_func = NULL; \
189 class_container.unserialize_func = NULL; \
190 class_container.serialize = NULL; \
191 class_container.unserialize = NULL; \
192 class_container.parent = NULL; \
193 class_container.num_interfaces = 0; \
194 class_container.interfaces = NULL; \
195 class_container.get_iterator = NULL; \
196 class_container.iterator_funcs.funcs = NULL; \
197 class_container.module = NULL; \
741b816 @zsuraski * Support getThis() for internal functions.
zsuraski authored
198 }
199
345e025 Fixed bug #33512 (Add missing support for isset()/unset() overloading…
Dmitry Stogov authored
200 #define INIT_OVERLOADED_CLASS_ENTRY(class_container, class_name, functions, handle_fcall, handle_propget, handle_propset) \
b489251 - MFH from HEAD:
Jani Taskinen authored
201 INIT_OVERLOADED_CLASS_ENTRY_EX(class_container, class_name, sizeof(class_name)-1, functions, handle_fcall, handle_propget, handle_propset, NULL, NULL)
345e025 Fixed bug #33512 (Add missing support for isset()/unset() overloading…
Dmitry Stogov authored
202
907fa66 Added API to use namesapces in internal extensions
Dmitry Stogov authored
203 #define INIT_NS_CLASS_ENTRY(class_container, ns, class_name, functions) \
204 INIT_CLASS_ENTRY(class_container, ZEND_NS_NAME(ns, class_name), functions)
205 #define INIT_OVERLOADED_NS_CLASS_ENTRY_EX(class_container, ns, class_name, functions, handle_fcall, handle_propget, handle_propset, handle_propunset, handle_propisset) \
206 INIT_OVERLOADED_CLASS_ENTRY_EX(class_container, ZEND_NS_NAME(ns, class_name), sizeof(ZEND_NS_NAME(ns, class_name))-1, functions, handle_fcall, handle_propget, handle_propset, handle_propunset, handle_propisset)
207 #define INIT_OVERLOADED_NS_CLASS_ENTRY(class_container, ns, class_name, functions, handle_fcall, handle_propget, handle_propset) \
208 INIT_OVERLOADED_CLASS_ENTRY(class_container, ZEND_NS_NAME(ns, class_name), functions, handle_fcall, handle_propget, handle_propset)
209
8768ab9 Fixed bug #34729 (Crash in ZTS mode under Apache)
Dmitry Stogov authored
210 #ifdef ZTS
f23e857 Fixed ZTS build
Dmitry Stogov authored
211 # define CE_STATIC_MEMBERS(ce) (((ce)->type==ZEND_USER_CLASS)?(ce)->static_members_table:CG(static_members_table)[(zend_intptr_t)(ce)->static_members_table])
8768ab9 Fixed bug #34729 (Crash in ZTS mode under Apache)
Dmitry Stogov authored
212 #else
c5237d8 Added caches to eliminate repeatable run-time bindings of functions, …
Dmitry Stogov authored
213 # define CE_STATIC_MEMBERS(ce) ((ce)->static_members_table)
8768ab9 Fixed bug #34729 (Crash in ZTS mode under Apache)
Dmitry Stogov authored
214 #endif
215
b489251 - MFH from HEAD:
Jani Taskinen authored
216 #define ZEND_FCI_INITIALIZED(fci) ((fci).size != 0)
217
573b460 @andigutmans Zend Library
andigutmans authored
218 int zend_next_free_module(void);
219
1727c6a more EXTERN_C wrapping of ZEND_API prototypes
Hartmut Holzgraefe authored
220 BEGIN_EXTERN_C()
f77e6a4 @zsuraski Generalize macros
zsuraski authored
221 ZEND_API int zend_get_parameters(int ht, int param_count, ...);
11e5d2f @zsuraski Get rid of more TSRMLS_FETCH's
zsuraski authored
222 ZEND_API int _zend_get_parameters_array(int ht, int param_count, zval **argument_array TSRMLS_DC);
e59bfcf @smalyshev deprecate zend_get_parameters_ex
smalyshev authored
223 ZEND_API ZEND_ATTRIBUTE_DEPRECATED int zend_get_parameters_ex(int param_count, ...);
11e5d2f @zsuraski Get rid of more TSRMLS_FETCH's
zsuraski authored
224 ZEND_API int _zend_get_parameters_array_ex(int param_count, zval ***argument_array TSRMLS_DC);
225
e39f3f3 Simplify/Optmize magic method calls (__get/__set/__call/__clone/__des…
Marcus Boerger authored
226 /* internal function to efficiently copy parameters when executing __call() */
227 ZEND_API int zend_copy_parameters_array(int param_count, zval *argument_array TSRMLS_DC);
228
11e5d2f @zsuraski Get rid of more TSRMLS_FETCH's
zsuraski authored
229 #define zend_get_parameters_array(ht, param_count, argument_array) \
230 _zend_get_parameters_array(ht, param_count, argument_array TSRMLS_CC)
231 #define zend_get_parameters_array_ex(param_count, argument_array) \
232 _zend_get_parameters_array_ex(param_count, argument_array TSRMLS_CC)
cc2b17d @felipensp MFH: Added new macro for check void parameters.
felipensp authored
233 #define zend_parse_parameters_none() \
234 zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "")
58f8805 Adding new parameter parsing API.
Andrei Zmievski authored
235
236 /* Parameter parsing API -- andrei */
237
238 #define ZEND_PARSE_PARAMS_QUIET 1<<1
8ce8324 @zsuraski More TSRMLS_FETCH annihilation
zsuraski authored
239 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
240 ZEND_API int zend_parse_parameters_ex(int flags, int num_args TSRMLS_DC, char *type_spec, ...);
cf7384a @felipensp - MFH: Constness (Added const qualifier to several function parameters)
felipensp authored
241 ZEND_API char *zend_zval_type_name(const zval *arg);
58f8805 Adding new parameter parsing API.
Andrei Zmievski authored
242
325f9ed fixed zend_parse_method_param
Georg Richter authored
243 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
244 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
245
b525549 @zsuraski More TSRMLS_FETCH work, and get rid of redundant ParametersPassedByRef
zsuraski authored
246 /* End of parameter parsing API -- andrei */
39f9487 @andigutmans -Tiny patches
andigutmans authored
247
6c810b0 Improved memory usage by movig constants to read only memory. (Dmitry…
Dmitry Stogov authored
248 ZEND_API int zend_register_functions(zend_class_entry *scope, const zend_function_entry *functions, HashTable *function_table, int type TSRMLS_DC);
249 ZEND_API void zend_unregister_functions(const zend_function_entry *functions, int count, HashTable *function_table TSRMLS_DC);
2ca2dc0 Restored old behavior of zend_statup_module()
Dmitry Stogov authored
250 ZEND_API int zend_startup_module(zend_module_entry *module_entry);
70bd938 Fixed bug in new module statrup mechanism
Dmitry Stogov authored
251 ZEND_API zend_module_entry* zend_register_internal_module(zend_module_entry *module_entry TSRMLS_DC);
252 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
253 ZEND_API int zend_startup_module_ex(zend_module_entry *module TSRMLS_DC);
c0c7a9f Improved PHP extension loading mechanism with support for module depe…
Dmitry Stogov authored
254 ZEND_API int zend_startup_modules(TSRMLS_D);
1a1178a eliminated unnecessary iterations during request startup/shutdown
Dmitry Stogov authored
255 ZEND_API void zend_destroy_modules(void);
cf7384a @felipensp - MFH: Constness (Added const qualifier to several function parameters)
felipensp authored
256 ZEND_API void zend_check_magic_method_implementation(const zend_class_entry *ce, const zend_function *fptr, int error_type TSRMLS_DC);
eb0e694 @andigutmans - Andrei, this is for you!
andigutmans authored
257
b577038 @zsuraski Avoid TSRMLS_FETCH()'s (still lots of work left)
zsuraski authored
258 ZEND_API zend_class_entry *zend_register_internal_class(zend_class_entry *class_entry TSRMLS_DC);
259 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
260 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
261 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
262
cf7384a @felipensp - MFH: Constness (Added const qualifier to several function parameters)
felipensp authored
263 ZEND_API int zend_register_class_alias_ex(const char *name, int name_len, zend_class_entry *ce TSRMLS_DC);
907fa66 Added API to use namesapces in internal extensions
Dmitry Stogov authored
264
265 #define zend_register_class_alias(name, ce) \
266 zend_register_class_alias_ex(name, sizeof(name)-1, ce TSRMLS_DC)
267 #define zend_register_ns_class_alias(ns, name, ce) \
268 zend_register_class_alias_ex(ZEND_NS_NAME(ns, name), sizeof(ZEND_NS_NAME(ns, name))-1, ce TSRMLS_DC)
269
d76cf1d @zsuraski More TSRMLS_FETCH work
zsuraski authored
270 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
271 ZEND_API int zend_disable_class(char *class_name, uint class_name_length TSRMLS_DC);
573b460 @andigutmans Zend Library
andigutmans authored
272
4187439 @zsuraski More TSRMLS_FETCH work
zsuraski authored
273 ZEND_API void zend_wrong_param_count(TSRMLS_D);
c81db6b Fixed bug #29210 (Function: is_callable - no support for private and …
Dmitry Stogov authored
274
275 #define IS_CALLABLE_CHECK_SYNTAX_ONLY (1<<0)
276 #define IS_CALLABLE_CHECK_NO_ACCESS (1<<1)
53e5260 - Add convenience function zend_is_callable_ex() and base zend_is_cal…
Marcus Boerger authored
277 #define IS_CALLABLE_CHECK_IS_STATIC (1<<2)
af05ce0 Fixed is_callable/call_user_func mess that had done different things …
Dmitry Stogov authored
278 #define IS_CALLABLE_CHECK_SILENT (1<<3)
c81db6b Fixed bug #29210 (Function: is_callable - no support for private and …
Dmitry Stogov authored
279
0cd997d - Simplify and synch is_callable_ex() with actual execution code
Marcus Boerger authored
280 #define IS_CALLABLE_STRICT (IS_CALLABLE_CHECK_IS_STATIC)
281
7d4fd3f Fixed bug #46409 (__invoke method called outside of object context wh…
Dmitry Stogov authored
282 ZEND_API zend_bool zend_is_callable_ex(zval *callable, zval *object_ptr, uint check_flags, char **callable_name, int *callable_name_len, zend_fcall_info_cache *fcc, char **error TSRMLS_DC);
e304515 @felipensp - MFH: Added parameter TSRMLS_DC in zend_is_callable()
felipensp authored
283 ZEND_API zend_bool zend_is_callable(zval *callable, uint check_flags, char **callable_name TSRMLS_DC);
26bfe3f Add zend_make_callable() which allows to make zval's callable zval's.
Marcus Boerger authored
284 ZEND_API zend_bool zend_make_callable(zval *callable, char **callable_name TSRMLS_DC);
6c810b0 Improved memory usage by movig constants to read only memory. (Dmitry…
Dmitry Stogov authored
285 ZEND_API const char *zend_get_module_version(const char *module_name);
cf7384a @felipensp - MFH: Constness (Added const qualifier to several function parameters)
felipensp authored
286 ZEND_API int zend_get_module_started(const char *module_name);
7bbbd50 Fix handling of static properties initialized to arrays
Marcus Boerger authored
287 ZEND_API int zend_declare_property(zend_class_entry *ce, char *name, int name_length, zval *property, int access_type TSRMLS_DC);
cf7384a @felipensp - MFH: Constness (Added const qualifier to several function parameters)
felipensp authored
288 ZEND_API int zend_declare_property_ex(zend_class_entry *ce, const 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
289 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
290 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
291 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
292 ZEND_API int zend_declare_property_double(zend_class_entry *ce, char *name, int name_length, double value, int access_type TSRMLS_DC);
eb7e848 @johannes spread some more const
johannes authored
293 ZEND_API int zend_declare_property_string(zend_class_entry *ce, char *name, int name_length, const char *value, int access_type TSRMLS_DC);
294 ZEND_API int zend_declare_property_stringl(zend_class_entry *ce, char *name, int name_length, const char *value, int value_len, int access_type TSRMLS_DC);
1343385 @zsuraski Rework zend_do_declare_property and related code into one code base
zsuraski authored
295
cf7384a @felipensp - MFH: Constness (Added const qualifier to several function parameters)
felipensp authored
296 ZEND_API int zend_declare_class_constant(zend_class_entry *ce, const char *name, size_t name_length, zval *value TSRMLS_DC);
297 ZEND_API int zend_declare_class_constant_null(zend_class_entry *ce, const char *name, size_t name_length TSRMLS_DC);
298 ZEND_API int zend_declare_class_constant_long(zend_class_entry *ce, const char *name, size_t name_length, long value TSRMLS_DC);
299 ZEND_API int zend_declare_class_constant_bool(zend_class_entry *ce, const char *name, size_t name_length, zend_bool value TSRMLS_DC);
300 ZEND_API int zend_declare_class_constant_double(zend_class_entry *ce, const char *name, size_t name_length, double value TSRMLS_DC);
301 ZEND_API int zend_declare_class_constant_stringl(zend_class_entry *ce, const char *name, size_t name_length, const char *value, size_t value_length TSRMLS_DC);
302 ZEND_API int zend_declare_class_constant_string(zend_class_entry *ce, const char *name, size_t name_length, const char *value TSRMLS_DC);
248345d Support for class constants and static members for internal classes
Dmitry Stogov authored
303
1d5c13b - Fix #31651 (ReflectionClass::getDefaultProperties segfaults with ar…
Marcus Boerger authored
304 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
305 ZEND_API void zend_update_property(zend_class_entry *scope, zval *object, char *name, int name_length, zval *value TSRMLS_DC);
306 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
307 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
308 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
309 ZEND_API void zend_update_property_double(zend_class_entry *scope, zval *object, char *name, int name_length, double value TSRMLS_DC);
cf7384a @felipensp - MFH: Constness (Added const qualifier to several function parameters)
felipensp authored
310 ZEND_API void zend_update_property_string(zend_class_entry *scope, zval *object, char *name, int name_length, const char *value TSRMLS_DC);
311 ZEND_API void zend_update_property_stringl(zend_class_entry *scope, zval *object, char *name, int name_length, const char *value, int value_length TSRMLS_DC);
573b460 @andigutmans Zend Library
andigutmans authored
312
248345d Support for class constants and static members for internal classes
Dmitry Stogov authored
313 ZEND_API int zend_update_static_property(zend_class_entry *scope, char *name, int name_length, zval *value TSRMLS_DC);
314 ZEND_API int zend_update_static_property_null(zend_class_entry *scope, char *name, int name_length TSRMLS_DC);
315 ZEND_API int zend_update_static_property_bool(zend_class_entry *scope, char *name, int name_length, long value TSRMLS_DC);
316 ZEND_API int zend_update_static_property_long(zend_class_entry *scope, char *name, int name_length, long value TSRMLS_DC);
317 ZEND_API int zend_update_static_property_double(zend_class_entry *scope, char *name, int name_length, double value TSRMLS_DC);
cf7384a @felipensp - MFH: Constness (Added const qualifier to several function parameters)
felipensp authored
318 ZEND_API int zend_update_static_property_string(zend_class_entry *scope, char *name, int name_length, const char *value TSRMLS_DC);
319 ZEND_API int zend_update_static_property_stringl(zend_class_entry *scope, char *name, int name_length, const char *value, int value_length TSRMLS_DC);
248345d Support for class constants and static members for internal classes
Dmitry Stogov authored
320
38805f2 Add property read code and use that in default exception class
Marcus Boerger authored
321 ZEND_API zval *zend_read_property(zend_class_entry *scope, zval *object, char *name, int name_length, zend_bool silent TSRMLS_DC);
322
248345d Support for class constants and static members for internal classes
Dmitry Stogov authored
323 ZEND_API zval *zend_read_static_property(zend_class_entry *scope, char *name, int name_length, zend_bool silent TSRMLS_DC);
324
cf7384a @felipensp - MFH: Constness (Added const qualifier to several function parameters)
felipensp authored
325 ZEND_API zend_class_entry *zend_get_class_entry(const zval *zobject TSRMLS_DC);
326 ZEND_API int zend_get_object_classname(const zval *object, char **class_name, zend_uint *class_name_len TSRMLS_DC);
9dd24c6 @tony2001 fix error messages when converting objects to other types
tony2001 authored
327 ZEND_API char *zend_get_type_by_const(int type);
6ac6cb1 added get_class_entry callback handler to the
Harald Radi authored
328
741b816 @zsuraski * Support getThis() for internal functions.
zsuraski authored
329 #define getThis() (this_ptr)
330
131d9cb @zsuraski *** empty log message ***
zsuraski authored
331 #define WRONG_PARAM_COUNT ZEND_WRONG_PARAM_COUNT()
332 #define WRONG_PARAM_COUNT_WITH_RETVAL(ret) ZEND_WRONG_PARAM_COUNT_WITH_RETVAL(ret)
a1ad287 @zsuraski - The tree compiles again
zsuraski authored
333 #define ARG_COUNT(dummy) (ht)
334 #define ZEND_NUM_ARGS() (ht)
4187439 @zsuraski More TSRMLS_FETCH work
zsuraski authored
335 #define ZEND_WRONG_PARAM_COUNT() { zend_wrong_param_count(TSRMLS_C); return; }
336 #define ZEND_WRONG_PARAM_COUNT_WITH_RETVAL(ret) { zend_wrong_param_count(TSRMLS_C); return ret; }
573b460 @andigutmans Zend Library
andigutmans authored
337
80bdd19 @zsuraski Fine tune Andi's patch
zsuraski authored
338 #ifndef ZEND_WIN32
573b460 @andigutmans Zend Library
andigutmans authored
339 #define DLEXPORT
340 #endif
341
7da75d8 MFH: Add array_init_size() and use it where array size is known at in…
Matt Wilmas authored
342 #define array_init(arg) _array_init((arg), 0 ZEND_FILE_LINE_CC)
343 #define array_init_size(arg, size) _array_init((arg), (size) ZEND_FILE_LINE_CC)
fcc0351 @zsuraski TSRMLS_FETCH work
zsuraski authored
344 #define object_init(arg) _object_init((arg) ZEND_FILE_LINE_CC TSRMLS_CC)
345 #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
346 #define object_and_properties_init(arg, ce, properties) _object_and_properties_init((arg), (ce), (properties) ZEND_FILE_LINE_CC TSRMLS_CC)
7da75d8 MFH: Add array_init_size() and use it where array size is known at in…
Matt Wilmas authored
347 ZEND_API int _array_init(zval *arg, uint size ZEND_FILE_LINE_DC);
fcc0351 @zsuraski TSRMLS_FETCH work
zsuraski authored
348 ZEND_API int _object_init(zval *arg ZEND_FILE_LINE_DC TSRMLS_DC);
349 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
350 ZEND_API int _object_and_properties_init(zval *arg, zend_class_entry *ce, HashTable *properties ZEND_FILE_LINE_DC TSRMLS_DC);
c5237d8 Added caches to eliminate repeatable run-time bindings of functions, …
Dmitry Stogov authored
351 ZEND_API void object_properties_init(zend_object *object, zend_class_entry *class_type);
6847fef added add_*_resource() and add_*_bool() functions
Thies C. Arntzen authored
352
047a574 - Add zend_merge_properties() which is designed to serve *_fetch_obje…
Marcus Boerger authored
353 ZEND_API void zend_merge_properties(zval *obj, HashTable *properties, int destroy_ht TSRMLS_DC);
354
6847fef added add_*_resource() and add_*_bool() functions
Thies C. Arntzen authored
355 /* no longer supported */
6c810b0 Improved memory usage by movig constants to read only memory. (Dmitry…
Dmitry Stogov authored
356 ZEND_API int add_assoc_function(zval *arg, const char *key, void (*function_ptr)(INTERNAL_FUNCTION_PARAMETERS));
6847fef added add_*_resource() and add_*_bool() functions
Thies C. Arntzen authored
357
6c810b0 Improved memory usage by movig constants to read only memory. (Dmitry…
Dmitry Stogov authored
358 ZEND_API int add_assoc_long_ex(zval *arg, const char *key, uint key_len, long n);
359 ZEND_API int add_assoc_null_ex(zval *arg, const char *key, uint key_len);
360 ZEND_API int add_assoc_bool_ex(zval *arg, const char *key, uint key_len, int b);
361 ZEND_API int add_assoc_resource_ex(zval *arg, const char *key, uint key_len, int r);
362 ZEND_API int add_assoc_double_ex(zval *arg, const char *key, uint key_len, double d);
363 ZEND_API int add_assoc_string_ex(zval *arg, const char *key, uint key_len, char *str, int duplicate);
364 ZEND_API int add_assoc_stringl_ex(zval *arg, const char *key, uint key_len, char *str, uint length, int duplicate);
365 ZEND_API int add_assoc_zval_ex(zval *arg, const char *key, uint key_len, zval *value);
ef95a34 @andigutmans - Patch from Sterling. Add API calls to add zval's as array indeces/
andigutmans authored
366
367 #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
368 #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
369 #define add_assoc_bool(__arg, __key, __b) add_assoc_bool_ex(__arg, __key, strlen(__key)+1, __b)
370 #define add_assoc_resource(__arg, __key, __r) add_assoc_resource_ex(__arg, __key, strlen(__key)+1, __r)
371 #define add_assoc_double(__arg, __key, __d) add_assoc_double_ex(__arg, __key, strlen(__key)+1, __d)
372 #define add_assoc_string(__arg, __key, __str, __duplicate) add_assoc_string_ex(__arg, __key, strlen(__key)+1, __str, __duplicate)
373 #define add_assoc_stringl(__arg, __key, __str, __length, __duplicate) add_assoc_stringl_ex(__arg, __key, strlen(__key)+1, __str, __length, __duplicate)
374 #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
375
0611acb @andigutmans - Change unset() functions to null(). unset() is legacy
andigutmans authored
376 /* unset() functions are only suported for legacy modules and null() functions should be used */
377 #define add_assoc_unset(__arg, __key) add_assoc_null_ex(__arg, __key, strlen(__key) + 1)
378 #define add_index_unset(__arg, __key) add_index_null(__arg, __key)
379 #define add_next_index_unset(__arg) add_next_index_null(__arg)
380 #define add_property_unset(__arg, __key) add_property_null(__arg, __key)
381
b05b949 Fixed bug #34879 (str_replace, array_map corrupt negative array index…
Dmitry Stogov authored
382 ZEND_API int add_index_long(zval *arg, ulong idx, long n);
383 ZEND_API int add_index_null(zval *arg, ulong idx);
384 ZEND_API int add_index_bool(zval *arg, ulong idx, int b);
385 ZEND_API int add_index_resource(zval *arg, ulong idx, int r);
386 ZEND_API int add_index_double(zval *arg, ulong idx, double d);
6c810b0 Improved memory usage by movig constants to read only memory. (Dmitry…
Dmitry Stogov authored
387 ZEND_API int add_index_string(zval *arg, ulong idx, const char *str, int duplicate);
388 ZEND_API int add_index_stringl(zval *arg, ulong idx, const char *str, uint length, int duplicate);
b05b949 Fixed bug #34879 (str_replace, array_map corrupt negative array index…
Dmitry Stogov authored
389 ZEND_API int add_index_zval(zval *arg, ulong index, zval *value);
6847fef added add_*_resource() and add_*_bool() functions
Thies C. Arntzen authored
390
573b460 @andigutmans Zend Library
andigutmans authored
391 ZEND_API int add_next_index_long(zval *arg, long n);
0611acb @andigutmans - Change unset() functions to null(). unset() is legacy
andigutmans authored
392 ZEND_API int add_next_index_null(zval *arg);
6847fef added add_*_resource() and add_*_bool() functions
Thies C. Arntzen authored
393 ZEND_API int add_next_index_bool(zval *arg, int b);
394 ZEND_API int add_next_index_resource(zval *arg, int r);
573b460 @andigutmans Zend Library
andigutmans authored
395 ZEND_API int add_next_index_double(zval *arg, double d);
6c810b0 Improved memory usage by movig constants to read only memory. (Dmitry…
Dmitry Stogov authored
396 ZEND_API int add_next_index_string(zval *arg, const char *str, int duplicate);
397 ZEND_API int add_next_index_stringl(zval *arg, const char *str, uint length, int duplicate);
ef95a34 @andigutmans - Patch from Sterling. Add API calls to add zval's as array indeces/
andigutmans authored
398 ZEND_API int add_next_index_zval(zval *arg, zval *value);
399
6c810b0 Improved memory usage by movig constants to read only memory. (Dmitry…
Dmitry Stogov authored
400 ZEND_API int add_get_assoc_string_ex(zval *arg, const char *key, uint key_len, const char *str, void **dest, int duplicate);
401 ZEND_API int add_get_assoc_stringl_ex(zval *arg, const char *key, uint key_len, const char *str, uint length, void **dest, int duplicate);
ef95a34 @andigutmans - Patch from Sterling. Add API calls to add zval's as array indeces/
andigutmans authored
402
403 #define add_get_assoc_string(__arg, __key, __str, __dest, __duplicate) add_get_assoc_string_ex(__arg, __key, strlen(__key)+1, __str, __dest, __duplicate)
404 #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
405
b05b949 Fixed bug #34879 (str_replace, array_map corrupt negative array index…
Dmitry Stogov authored
406 ZEND_API int add_get_index_long(zval *arg, ulong idx, long l, void **dest);
407 ZEND_API int add_get_index_double(zval *arg, ulong idx, double d, void **dest);
6c810b0 Improved memory usage by movig constants to read only memory. (Dmitry…
Dmitry Stogov authored
408 ZEND_API int add_get_index_string(zval *arg, ulong idx, const char *str, void **dest, int duplicate);
409 ZEND_API int add_get_index_stringl(zval *arg, ulong idx, const char *str, uint length, void **dest, int duplicate);
573b460 @andigutmans Zend Library
andigutmans authored
410
cf7384a @felipensp - MFH: Constness (Added const qualifier to several function parameters)
felipensp authored
411 ZEND_API int add_property_long_ex(zval *arg, const char *key, uint key_len, long l TSRMLS_DC);
412 ZEND_API int add_property_null_ex(zval *arg, const char *key, uint key_len TSRMLS_DC);
413 ZEND_API int add_property_bool_ex(zval *arg, const char *key, uint key_len, int b TSRMLS_DC);
414 ZEND_API int add_property_resource_ex(zval *arg, const char *key, uint key_len, long r TSRMLS_DC);
415 ZEND_API int add_property_double_ex(zval *arg, const char *key, uint key_len, double d TSRMLS_DC);
eb7e848 @johannes spread some more const
johannes authored
416 ZEND_API int add_property_string_ex(zval *arg, const char *key, uint key_len, const char *str, int duplicate TSRMLS_DC);
417 ZEND_API int add_property_stringl_ex(zval *arg, const char *key, uint key_len, const char *str, uint length, int duplicate TSRMLS_DC);
cf7384a @felipensp - MFH: Constness (Added const qualifier to several function parameters)
felipensp authored
418 ZEND_API int add_property_zval_ex(zval *arg, const char *key, uint key_len, zval *value TSRMLS_DC);
eccc536 @smalyshev Make add_property_ functions work via write_property handler
smalyshev authored
419
420 #define add_property_long(__arg, __key, __n) add_property_long_ex(__arg, __key, strlen(__key)+1, __n TSRMLS_CC)
421 #define add_property_null(__arg, __key) add_property_null_ex(__arg, __key, strlen(__key) + 1 TSRMLS_CC)
422 #define add_property_bool(__arg, __key, __b) add_property_bool_ex(__arg, __key, strlen(__key)+1, __b TSRMLS_CC)
423 #define add_property_resource(__arg, __key, __r) add_property_resource_ex(__arg, __key, strlen(__key)+1, __r TSRMLS_CC)
637a404 - MFH as discussed
Marcus Boerger authored
424 #define add_property_double(__arg, __key, __d) add_property_double_ex(__arg, __key, strlen(__key)+1, __d TSRMLS_CC)
eccc536 @smalyshev Make add_property_ functions work via write_property handler
smalyshev authored
425 #define add_property_string(__arg, __key, __str, __duplicate) add_property_string_ex(__arg, __key, strlen(__key)+1, __str, __duplicate TSRMLS_CC)
426 #define add_property_stringl(__arg, __key, __str, __length, __duplicate) add_property_stringl_ex(__arg, __key, strlen(__key)+1, __str, __length, __duplicate TSRMLS_CC)
427 #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
428
92b4013 @zsuraski Try to put an end to the endless number of call_user_function variants.
zsuraski authored
429
f8bbafd @zsuraski ntroduce infrastructure for supplying information about arguments,
zsuraski authored
430 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);
431 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 @zsuraski Try to put an end to the endless number of call_user_function variants.
zsuraski authored
432
f87d453 mark empty_fcall_info and empty_fcall_info_cache as constant. a few l…
Nuno Lopes authored
433 ZEND_API extern const zend_fcall_info empty_fcall_info;
434 ZEND_API extern const zend_fcall_info_cache empty_fcall_info_cache;
92b4013 @zsuraski Try to put an end to the endless number of call_user_function variants.
zsuraski authored
435
64c353a - MFH zend_fcall_info_*() and parameter parsing option 'f'
Marcus Boerger authored
436 /** Build zend_call_info/cache from a zval*
437 *
438 * Caller is responsible to provide a return value, otherwise the we will crash.
439 * fci->retval_ptr_ptr = NULL;
440 * In order to pass parameters the following members need to be set:
441 * fci->param_count = 0;
442 * fci->params = NULL;
b489251 - MFH from HEAD:
Jani Taskinen authored
443 * The callable_name argument may be NULL.
e8a8acd [DOC]
Marcus Boerger authored
444 * Set check_flags to IS_CALLABLE_STRICT for every new usage!
b489251 - MFH from HEAD:
Jani Taskinen authored
445 */
e8a8acd [DOC]
Marcus Boerger authored
446 ZEND_API int zend_fcall_info_init(zval *callable, uint check_flags, zend_fcall_info *fci, zend_fcall_info_cache *fcc, char **callable_name, char **error TSRMLS_DC);
b489251 - MFH from HEAD:
Jani Taskinen authored
447
448 /** Clear argumens connected with zend_fcall_info *fci
449 * If free_mem is not zero then the params array gets free'd as well
450 */
451 ZEND_API void zend_fcall_info_args_clear(zend_fcall_info *fci, int free_mem);
452
453 /** Save current arguments from zend_fcall_info *fci
454 * params array will be set to NULL
455 */
456 ZEND_API void zend_fcall_info_args_save(zend_fcall_info *fci, int *param_count, zval ****params);
457
458 /** Free arguments connected with zend_fcall_info *fci andset back saved ones.
64c353a - MFH zend_fcall_info_*() and parameter parsing option 'f'
Marcus Boerger authored
459 */
b489251 - MFH from HEAD:
Jani Taskinen authored
460 ZEND_API void zend_fcall_info_args_restore(zend_fcall_info *fci, int param_count, zval ***params);
64c353a - MFH zend_fcall_info_*() and parameter parsing option 'f'
Marcus Boerger authored
461
462 /** Set or clear the arguments in the zend_call_info struct taking care of
463 * refcount. If args is NULL and arguments are set then those are cleared.
464 */
465 ZEND_API int zend_fcall_info_args(zend_fcall_info *fci, zval *args TSRMLS_DC);
466
b489251 - MFH from HEAD:
Jani Taskinen authored
467 /** Set arguments in the zend_fcall_info struct taking care of refcount.
468 * If argc is 0 the arguments which are set will be cleared, else pass
469 * a variable amount of zval** arguments.
470 */
471 ZEND_API int zend_fcall_info_argp(zend_fcall_info *fci TSRMLS_DC, int argc, zval ***argv);
472
473 /** Set arguments in the zend_fcall_info struct taking care of refcount.
474 * If argc is 0 the arguments which are set will be cleared, else pass
475 * a variable amount of zval** arguments.
476 */
477 ZEND_API int zend_fcall_info_argv(zend_fcall_info *fci TSRMLS_DC, int argc, va_list *argv);
478
479 /** Set arguments in the zend_fcall_info struct taking care of refcount.
480 * If argc is 0 the arguments which are set will be cleared, else pass
481 * a variable amount of zval** arguments.
482 */
483 ZEND_API int zend_fcall_info_argn(zend_fcall_info *fci TSRMLS_DC, int argc, ...);
484
64c353a - MFH zend_fcall_info_*() and parameter parsing option 'f'
Marcus Boerger authored
485 /** Call a function using information created by zend_fcall_info_init()/args().
486 * If args is given then those replace the arguement info in fci is temporarily.
487 */
488 ZEND_API int zend_fcall_info_call(zend_fcall_info *fci, zend_fcall_info_cache *fcc, zval **retval, zval *args TSRMLS_DC);
489
92b4013 @zsuraski Try to put an end to the endless number of call_user_function variants.
zsuraski authored
490 ZEND_API int zend_call_function(zend_fcall_info *fci, zend_fcall_info_cache *fci_cache TSRMLS_DC);
491
cf7384a @felipensp - MFH: Constness (Added const qualifier to several function parameters)
felipensp authored
492 ZEND_API int zend_set_hash_symbol(zval *symbol, const char *name, int name_length, zend_bool is_ref, int num_symbol_tables, ...);
f962a35 Added zend_set_hash_symbol() function.
Andrei Zmievski authored
493
453b49e Added a number of small performance tweaks and optimizations
Dmitry Stogov authored
494 ZEND_API void zend_delete_variable(zend_execute_data *ex, HashTable *ht, char *name, int name_len, ulong hash_value TSRMLS_DC);
495
11bcaed @andigutmans - Rename delete_global_variable() to zend_delete_global_variable()
andigutmans authored
496 ZEND_API int zend_delete_global_variable(char *name, int name_len TSRMLS_DC);
db507dd @andigutmans - Commit the variable fetch optimization.
andigutmans authored
497
453b49e Added a number of small performance tweaks and optimizations
Dmitry Stogov authored
498 ZEND_API int zend_delete_global_variable_ex(char *name, int name_len, ulong hash_value TSRMLS_DC);
499
1d33a3e Fixed bug #31158 (array_splice on $GLOBALS crashes)
Dmitry Stogov authored
500 ZEND_API void zend_reset_all_cv(HashTable *symbol_table TSRMLS_DC);
501
2ecf4bb Lazy EG(active_symbol_table) initialization
Dmitry Stogov authored
502 ZEND_API void zend_rebuild_symbol_table(TSRMLS_D);
503
4f6c95d @zsuraski Whitespace
zsuraski authored
504 #define add_method(arg, key, method) add_assoc_function((arg), (key), (method))
573b460 @andigutmans Zend Library
andigutmans authored
505
a35c61a MFZE1
Andrei Zmievski authored
506 ZEND_API ZEND_FUNCTION(display_disabled_function);
a700180 commiting zend_disable_class patch for George:
Harald Radi authored
507 ZEND_API ZEND_FUNCTION(display_disabled_class);
1727c6a more EXTERN_C wrapping of ZEND_API prototypes
Hartmut Holzgraefe authored
508 END_EXTERN_C()
a35c61a MFZE1
Andrei Zmievski authored
509
bcddfd4 cleaned up the RETVAL_ RETURN_ and ZVAL_ macros
Thies C. Arntzen authored
510 #if ZEND_DEBUG
511 #define CHECK_ZVAL_STRING(z) \
b489251 - MFH from HEAD:
Jani Taskinen authored
512 if (Z_STRVAL_P(z)[ Z_STRLEN_P(z) ] != '\0') { zend_error(E_WARNING, "String is not zero-terminated (%s)", Z_STRVAL_P(z)); }
43ebb86 @zsuraski Fix bug #10287 - avoid crashing under a bogus usage of list()
zsuraski authored
513 #define CHECK_ZVAL_STRING_REL(z) \
b489251 - MFH from HEAD:
Jani Taskinen authored
514 if (Z_STRVAL_P(z)[ Z_STRLEN_P(z) ] != '\0') { zend_error(E_WARNING, "String is not zero-terminated (%s) (source: %s:%d)", Z_STRVAL_P(z) ZEND_FILE_LINE_RELAY_CC); }
bcddfd4 cleaned up the RETVAL_ RETURN_ and ZVAL_ macros
Thies C. Arntzen authored
515 #else
516 #define CHECK_ZVAL_STRING(z)
43ebb86 @zsuraski Fix bug #10287 - avoid crashing under a bogus usage of list()
zsuraski authored
517 #define CHECK_ZVAL_STRING_REL(z)
bcddfd4 cleaned up the RETVAL_ RETURN_ and ZVAL_ macros
Thies C. Arntzen authored
518 #endif
519
453b49e Added a number of small performance tweaks and optimizations
Dmitry Stogov authored
520 #define ZVAL_RESOURCE(z, l) do { \
521 zval *__z = (z); \
522 Z_LVAL_P(__z) = l; \
523 Z_TYPE_P(__z) = IS_RESOURCE;\
524 } while (0)
bcddfd4 cleaned up the RETVAL_ RETURN_ and ZVAL_ macros
Thies C. Arntzen authored
525
453b49e Added a number of small performance tweaks and optimizations
Dmitry Stogov authored
526 #define ZVAL_BOOL(z, b) do { \
527 zval *__z = (z); \
528 Z_LVAL_P(__z) = ((b) != 0); \
529 Z_TYPE_P(__z) = IS_BOOL; \
530 } while (0)
bcddfd4 cleaned up the RETVAL_ RETURN_ and ZVAL_ macros
Thies C. Arntzen authored
531
637a404 - MFH as discussed
Marcus Boerger authored
532 #define ZVAL_NULL(z) { \
533 Z_TYPE_P(z) = IS_NULL; \
af22085 added ZVAL_*() macros.
Thies C. Arntzen authored
534 }
bcddfd4 cleaned up the RETVAL_ RETURN_ and ZVAL_ macros
Thies C. Arntzen authored
535
637a404 - MFH as discussed
Marcus Boerger authored
536 #define ZVAL_LONG(z, l) { \
453b49e Added a number of small performance tweaks and optimizations
Dmitry Stogov authored
537 zval *__z = (z); \
538 Z_LVAL_P(__z) = l; \
539 Z_TYPE_P(__z) = IS_LONG; \
af22085 added ZVAL_*() macros.
Thies C. Arntzen authored
540 }
bcddfd4 cleaned up the RETVAL_ RETURN_ and ZVAL_ macros
Thies C. Arntzen authored
541
637a404 - MFH as discussed
Marcus Boerger authored
542 #define ZVAL_DOUBLE(z, d) { \
453b49e Added a number of small performance tweaks and optimizations
Dmitry Stogov authored
543 zval *__z = (z); \
544 Z_DVAL_P(__z) = d; \
545 Z_TYPE_P(__z) = IS_DOUBLE; \
af22085 added ZVAL_*() macros.
Thies C. Arntzen authored
546 }
bcddfd4 cleaned up the RETVAL_ RETURN_ and ZVAL_ macros
Thies C. Arntzen authored
547
453b49e Added a number of small performance tweaks and optimizations
Dmitry Stogov authored
548 #define ZVAL_STRING(z, s, duplicate) do { \
549 const char *__s=(s); \
550 zval *__z = (z); \
551 Z_STRLEN_P(__z) = strlen(__s); \
552 Z_STRVAL_P(__z) = (duplicate?estrndup(__s, Z_STRLEN_P(__z)):(char*)__s);\
553 Z_TYPE_P(__z) = IS_STRING; \
554 } while (0)
555
556 #define ZVAL_STRINGL(z, s, l, duplicate) do { \
557 const char *__s=(s); int __l=l; \
558 zval *__z = (z); \
559 Z_STRLEN_P(__z) = __l; \
560 Z_STRVAL_P(__z) = (duplicate?estrndup(__s, __l):(char*)__s);\
561 Z_TYPE_P(__z) = IS_STRING; \
562 } while (0)
563
564 #define ZVAL_EMPTY_STRING(z) do { \
565 zval *__z = (z); \
566 Z_STRLEN_P(__z) = 0; \
567 Z_STRVAL_P(__z) = STR_EMPTY_ALLOC();\
568 Z_TYPE_P(__z) = IS_STRING; \
569 } while (0)
af22085 added ZVAL_*() macros.
Thies C. Arntzen authored
570
d90ebc6 Fixed comilation warnings
Dmitry Stogov authored
571 #define ZVAL_ZVAL(z, zv, copy, dtor) { \
572 zend_uchar is_ref = Z_ISREF_P(z); \
573 zend_uint refcount = Z_REFCOUNT_P(z); \
453b49e Added a number of small performance tweaks and optimizations
Dmitry Stogov authored
574 ZVAL_COPY_VALUE(z, zv); \
d90ebc6 Fixed comilation warnings
Dmitry Stogov authored
575 if (copy) { \
576 zval_copy_ctor(z); \
577 } \
578 if (dtor) { \
579 if (!copy) { \
580 ZVAL_NULL(zv); \
581 } \
582 zval_ptr_dtor(&zv); \
583 } \
584 Z_SET_ISREF_TO_P(z, is_ref); \
585 Z_SET_REFCOUNT_P(z, refcount); \
c7d27ad Add macros to return values of other zvals.
Marcus Boerger authored
586 }
587
4f6c95d @zsuraski Whitespace
zsuraski authored
588 #define ZVAL_FALSE(z) ZVAL_BOOL(z, 0)
589 #define ZVAL_TRUE(z) ZVAL_BOOL(z, 1)
af22085 added ZVAL_*() macros.
Thies C. Arntzen authored
590
4f6c95d @zsuraski Whitespace
zsuraski authored
591 #define RETVAL_RESOURCE(l) ZVAL_RESOURCE(return_value, l)
592 #define RETVAL_BOOL(b) ZVAL_BOOL(return_value, b)
bcddfd4 cleaned up the RETVAL_ RETURN_ and ZVAL_ macros
Thies C. Arntzen authored
593 #define RETVAL_NULL() ZVAL_NULL(return_value)
4f6c95d @zsuraski Whitespace
zsuraski authored
594 #define RETVAL_LONG(l) ZVAL_LONG(return_value, l)
595 #define RETVAL_DOUBLE(d) ZVAL_DOUBLE(return_value, d)
596 #define RETVAL_STRING(s, duplicate) ZVAL_STRING(return_value, s, duplicate)
597 #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
598 #define RETVAL_EMPTY_STRING() ZVAL_EMPTY_STRING(return_value)
c7d27ad Add macros to return values of other zvals.
Marcus Boerger authored
599 #define RETVAL_ZVAL(zv, copy, dtor) ZVAL_ZVAL(return_value, zv, copy, dtor)
4f6c95d @zsuraski Whitespace
zsuraski authored
600 #define RETVAL_FALSE ZVAL_BOOL(return_value, 0)
601 #define RETVAL_TRUE ZVAL_BOOL(return_value, 1)
bcddfd4 cleaned up the RETVAL_ RETURN_ and ZVAL_ macros
Thies C. Arntzen authored
602
603 #define RETURN_RESOURCE(l) { RETVAL_RESOURCE(l); return; }
604 #define RETURN_BOOL(b) { RETVAL_BOOL(b); return; }
605 #define RETURN_NULL() { RETVAL_NULL(); return;}
606 #define RETURN_LONG(l) { RETVAL_LONG(l); return; }
607 #define RETURN_DOUBLE(d) { RETVAL_DOUBLE(d); return; }
4f6c95d @zsuraski Whitespace
zsuraski authored
608 #define RETURN_STRING(s, duplicate) { RETVAL_STRING(s, duplicate); return; }
609 #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
610 #define RETURN_EMPTY_STRING() { RETVAL_EMPTY_STRING(); return; }
c7d27ad Add macros to return values of other zvals.
Marcus Boerger authored
611 #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
612 #define RETURN_FALSE { RETVAL_FALSE; return; }
613 #define RETURN_TRUE { RETVAL_TRUE; return; }
1f985ed @zsuraski Moved all #define's for SET_ and RETURN_ to zend_API.h
zsuraski authored
614
4f6c95d @zsuraski Whitespace
zsuraski authored
615 #define SET_VAR_STRING(n, v) { \
48ffdd7 @zsuraski * Setting variables in the global scope wasn't handling is_ref's prop…
zsuraski authored
616 { \
235386b @zsuraski Change ALLOC_ZVAL() semantics
zsuraski authored
617 zval *var; \
618 ALLOC_ZVAL(var); \
4f6c95d @zsuraski Whitespace
zsuraski authored
619 ZVAL_STRING(var, v, 0); \
6393ab1 @zsuraski Now that's an annoying bug.
zsuraski authored
620 ZEND_SET_GLOBAL_VAR(n, var); \
48ffdd7 @zsuraski * Setting variables in the global scope wasn't handling is_ref's prop…
zsuraski authored
621 } \
1f985ed @zsuraski Moved all #define's for SET_ and RETURN_ to zend_API.h
zsuraski authored
622 }
48ffdd7 @zsuraski * Setting variables in the global scope wasn't handling is_ref's prop…
zsuraski authored
623
4f6c95d @zsuraski Whitespace
zsuraski authored
624 #define SET_VAR_STRINGL(n, v, l) { \
48ffdd7 @zsuraski * Setting variables in the global scope wasn't handling is_ref's prop…
zsuraski authored
625 { \
235386b @zsuraski Change ALLOC_ZVAL() semantics
zsuraski authored
626 zval *var; \
627 ALLOC_ZVAL(var); \
4f6c95d @zsuraski Whitespace
zsuraski authored
628 ZVAL_STRINGL(var, v, l, 0); \
48ffdd7 @zsuraski * Setting variables in the global scope wasn't handling is_ref's prop…
zsuraski authored
629 ZEND_SET_GLOBAL_VAR(n, var); \
630 } \
1f985ed @zsuraski Moved all #define's for SET_ and RETURN_ to zend_API.h
zsuraski authored
631 }
48ffdd7 @zsuraski * Setting variables in the global scope wasn't handling is_ref's prop…
zsuraski authored
632
4f6c95d @zsuraski Whitespace
zsuraski authored
633 #define SET_VAR_LONG(n, v) { \
48ffdd7 @zsuraski * Setting variables in the global scope wasn't handling is_ref's prop…
zsuraski authored
634 { \
235386b @zsuraski Change ALLOC_ZVAL() semantics
zsuraski authored
635 zval *var; \
636 ALLOC_ZVAL(var); \
4f6c95d @zsuraski Whitespace
zsuraski authored
637 ZVAL_LONG(var, v); \
48ffdd7 @zsuraski * Setting variables in the global scope wasn't handling is_ref's prop…
zsuraski authored
638 ZEND_SET_GLOBAL_VAR(n, var); \
639 } \
1f985ed @zsuraski Moved all #define's for SET_ and RETURN_ to zend_API.h
zsuraski authored
640 }
48ffdd7 @zsuraski * Setting variables in the global scope wasn't handling is_ref's prop…
zsuraski authored
641
4f6c95d @zsuraski Whitespace
zsuraski authored
642 #define SET_VAR_DOUBLE(n, v) { \
48ffdd7 @zsuraski * Setting variables in the global scope wasn't handling is_ref's prop…
zsuraski authored
643 { \
235386b @zsuraski Change ALLOC_ZVAL() semantics
zsuraski authored
644 zval *var; \
645 ALLOC_ZVAL(var); \
4f6c95d @zsuraski Whitespace
zsuraski authored
646 ZVAL_DOUBLE(var, v); \
48ffdd7 @zsuraski * Setting variables in the global scope wasn't handling is_ref's prop…
zsuraski authored
647 ZEND_SET_GLOBAL_VAR(n, var); \
648 } \
1f985ed @zsuraski Moved all #define's for SET_ and RETURN_ to zend_API.h
zsuraski authored
649 }
650
651
c34560b @andigutmans - Remove _EX and make it the old _LENGTH
andigutmans authored
652 #define ZEND_SET_SYMBOL(symtable, name, var) \
653 { \
654 char *_name = (name); \
655 \
4c8259b @andigutmans - Call ZEND_SET_SYMBOL_WITH_LENGTH() with refcount 1 from the standard
andigutmans authored
656 ZEND_SET_SYMBOL_WITH_LENGTH(symtable, _name, strlen(_name)+1, var, 1, 0); \
48ffdd7 @zsuraski * Setting variables in the global scope wasn't handling is_ref's prop…
zsuraski authored
657 }
658
c34560b @andigutmans - Remove _EX and make it the old _LENGTH
andigutmans authored
659 #define ZEND_SET_SYMBOL_WITH_LENGTH(symtable, name, name_length, var, _refcount, _is_ref) \
48ffdd7 @zsuraski * Setting variables in the global scope wasn't handling is_ref's prop…
zsuraski authored
660 { \
661 zval **orig_var; \
662 \
620d013 @zsuraski Support symbols in any symbol table, not just the active one
zsuraski authored
663 if (zend_hash_find(symtable, (name), (name_length), (void **) &orig_var)==SUCCESS \
48ffdd7 @zsuraski * Setting variables in the global scope wasn't handling is_ref's prop…
zsuraski authored
664 && PZVAL_IS_REF(*orig_var)) { \
b489251 - MFH from HEAD:
Jani Taskinen authored
665 Z_SET_REFCOUNT_P(var, Z_REFCOUNT_PP(orig_var)); \
666 Z_SET_ISREF_P(var); \
48ffdd7 @zsuraski * Setting variables in the global scope wasn't handling is_ref's prop…
zsuraski authored
667 \
2ddc4fe @zsuraski Make it possible to explicitly set refcount in ZEND_SET_SYMBOL_WITH_L…
zsuraski authored
668 if (_refcount) { \
b489251 - MFH from HEAD:
Jani Taskinen authored
669 Z_SET_REFCOUNT_P(var, Z_REFCOUNT_P(var) + _refcount - 1); \
2ddc4fe @zsuraski Make it possible to explicitly set refcount in ZEND_SET_SYMBOL_WITH_L…
zsuraski authored
670 } \
48ffdd7 @zsuraski * Setting variables in the global scope wasn't handling is_ref's prop…
zsuraski authored
671 zval_dtor(*orig_var); \
158088c @zsuraski Allow to set the reference count explicitly for ZEND_SET_SYMBOL_WITH_…
zsuraski authored
672 **orig_var = *(var); \
b489251 - MFH from HEAD:
Jani Taskinen authored
673 FREE_ZVAL(var); \
48ffdd7 @zsuraski * Setting variables in the global scope wasn't handling is_ref's prop…
zsuraski authored
674 } else { \
b489251 - MFH from HEAD:
Jani Taskinen authored
675 Z_SET_ISREF_TO_P(var, _is_ref); \
158088c @zsuraski Allow to set the reference count explicitly for ZEND_SET_SYMBOL_WITH_…
zsuraski authored
676 if (_refcount) { \
b489251 - MFH from HEAD:
Jani Taskinen authored
677 Z_SET_REFCOUNT_P(var, _refcount); \
158088c @zsuraski Allow to set the reference count explicitly for ZEND_SET_SYMBOL_WITH_…
zsuraski authored
678 } \
679 zend_hash_update(symtable, (name), (name_length), &(var), sizeof(zval *), NULL); \
48ffdd7 @zsuraski * Setting variables in the global scope wasn't handling is_ref's prop…
zsuraski authored
680 } \
681 }
682
620d013 @zsuraski Support symbols in any symbol table, not just the active one
zsuraski authored
683
684 #define ZEND_SET_GLOBAL_VAR(name, var) \
685 ZEND_SET_SYMBOL(&EG(symbol_table), name, var)
686
b489251 - MFH from HEAD:
Jani Taskinen authored
687 #define ZEND_SET_GLOBAL_VAR_WITH_LENGTH(name, name_length, var, _refcount, _is_ref) \
e345066 *** empty log message ***
Andrei Zmievski authored
688 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
689
b489251 - MFH from HEAD:
Jani Taskinen authored
690 #define ZEND_DEFINE_PROPERTY(class_ptr, name, value, mask) \
1343385 @zsuraski Rework zend_do_declare_property and related code into one code base
zsuraski authored
691 { \
692 char *_name = (name); \
693 int namelen = strlen(_name); \
7bbbd50 Fix handling of static properties initialized to arrays
Marcus Boerger authored
694 zend_declare_property(class_ptr, _name, namelen, value, mask TSRMLS_CC); \
daf3ac6 add convenience functions or adding class properties. Ok'd for commi…
George Schlossnagle authored
695 }
696
637a404 - MFH as discussed
Marcus Boerger authored
697 #define HASH_OF(p) (Z_TYPE_P(p)==IS_ARRAY ? Z_ARRVAL_P(p) : ((Z_TYPE_P(p)==IS_OBJECT ? Z_OBJ_HT_P(p)->get_properties((p) TSRMLS_CC) : NULL)))
698 #define ZVAL_IS_NULL(z) (Z_TYPE_P(z)==IS_NULL)
06a18f1 @andigutmans - Add some internal functions to Zend
andigutmans authored
699
8b6f848 @andigutmans - Merge from Engine 1
andigutmans authored
700 /* For compatibility */
701 #define ZEND_MINIT ZEND_MODULE_STARTUP_N
702 #define ZEND_MSHUTDOWN ZEND_MODULE_SHUTDOWN_N
703 #define ZEND_RINIT ZEND_MODULE_ACTIVATE_N
704 #define ZEND_RSHUTDOWN ZEND_MODULE_DEACTIVATE_N
705 #define ZEND_MINFO ZEND_MODULE_INFO_N
ada4e50 MFH: Added automatic module globals management.
Dmitry Stogov authored
706 #define ZEND_GINIT(module) ((void (*)(void* TSRMLS_DC))(ZEND_MODULE_GLOBALS_CTOR_N(module)))
707 #define ZEND_GSHUTDOWN(module) ((void (*)(void* TSRMLS_DC))(ZEND_MODULE_GLOBALS_DTOR_N(module)))
8b6f848 @andigutmans - Merge from Engine 1
andigutmans authored
708
709 #define ZEND_MINIT_FUNCTION ZEND_MODULE_STARTUP_D
f5c5986 @smalyshev _FUNCTION is used in definition, so use _D
smalyshev authored
710 #define ZEND_MSHUTDOWN_FUNCTION ZEND_MODULE_SHUTDOWN_D
711 #define ZEND_RINIT_FUNCTION ZEND_MODULE_ACTIVATE_D
712 #define ZEND_RSHUTDOWN_FUNCTION ZEND_MODULE_DEACTIVATE_D
713 #define ZEND_MINFO_FUNCTION ZEND_MODULE_INFO_D
ada4e50 MFH: Added automatic module globals management.
Dmitry Stogov authored
714 #define ZEND_GINIT_FUNCTION ZEND_MODULE_GLOBALS_CTOR_D
715 #define ZEND_GSHUTDOWN_FUNCTION ZEND_MODULE_GLOBALS_DTOR_D
8b6f848 @andigutmans - Merge from Engine 1
andigutmans authored
716
0450ab9 @zsuraski MFZE1 (Expose more C++ APIs)
zsuraski authored
717 END_EXTERN_C()
637a404 - MFH as discussed
Marcus Boerger authored
718
b982307 Change header protection macros to conform to standard.
Sascha Schumann authored
719 #endif /* ZEND_API_H */
573b460 @andigutmans Zend Library
andigutmans authored
720
8b6f848 @andigutmans - Merge from Engine 1
andigutmans authored
721
573b460 @andigutmans Zend Library
andigutmans authored
722 /*
723 * Local variables:
724 * tab-width: 4
725 * c-basic-offset: 4
333406b - Added some missing CVS $Id$ tags, headers and footers.
foobar authored
726 * indent-tabs-mode: t
573b460 @andigutmans Zend Library
andigutmans authored
727 * End:
728 */
Something went wrong with that request. Please try again.