Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

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