|
19 | 19 |
|
20 | 20 | #include <php.h> |
21 | 21 | #include <Zend/zend_string.h> |
22 | | -#if PHP_VERSION_ID >= 70000 |
23 | 22 | #include <Zend/zend_portability.h> |
24 | | -#endif |
25 | 23 |
|
26 | 24 | #ifdef PHP_WIN32 |
27 | 25 | #include "config.w32.h" |
|
40 | 38 | #define HASH_KEY_NON_EXISTENT HASH_KEY_NON_EXISTANT |
41 | 39 | #endif |
42 | 40 |
|
43 | | -#if PHP_VERSION_ID >= 70000 |
44 | | -#define str_efree(s) efree((char*) s) |
45 | | -#else |
46 | | -#include <Zend/zend_string.h> |
47 | | -#endif |
48 | | - |
49 | 41 | #if defined(__GNUC__) |
50 | 42 | #define ARG_UNUSED __attribute__((unused)) |
51 | 43 | #else |
|
66 | 58 | #define PHONGO_BREAK_INTENTIONALLY_MISSING |
67 | 59 | #endif |
68 | 60 |
|
69 | | -#if PHP_VERSION_ID >= 70000 |
70 | | -#define phongo_char zend_string |
71 | | -#define phongo_long zend_long |
72 | 61 | #if SIZEOF_ZEND_LONG == 8 |
73 | 62 | #define PHONGO_LONG_FORMAT PRId64 |
74 | 63 | #elif SIZEOF_ZEND_LONG == 4 |
75 | 64 | #define PHONGO_LONG_FORMAT PRId32 |
76 | 65 | #else |
77 | 66 | #error Unsupported architecture (integers are neither 32-bit nor 64-bit) |
78 | 67 | #endif |
79 | | -#define SIZEOF_PHONGO_LONG SIZEOF_ZEND_LONG |
80 | | -#define phongo_create_object_retval zend_object* |
81 | | -#define phongo_get_gc_table zval** |
82 | 68 | #define PHONGO_ALLOC_OBJECT_T(_obj_t, _class_type) (_obj_t*) ecalloc(1, sizeof(_obj_t) + zend_object_properties_size(_class_type)) |
83 | | -#define PHONGO_TSRMLS_FETCH_FROM_CTX(user_data) |
84 | | -#define DECLARE_RETURN_VALUE_USED int return_value_used = 1; |
85 | | -#define EXCEPTION_P(_ex, _zp) ZVAL_OBJ(&_zp, _ex) |
86 | 69 | #define ADD_ASSOC_STRING(_zv, _key, _value) add_assoc_string_ex(_zv, ZEND_STRL(_key), (char*) (_value)); |
87 | 70 | #define ADD_ASSOC_STRINGL(_zv, _key, _value, _len) add_assoc_stringl_ex(_zv, ZEND_STRL(_key), (char*) (_value), _len); |
88 | 71 | #define ADD_ASSOC_STRING_EX(_zv, _key, _key_len, _value, _value_len) add_assoc_stringl_ex(_zv, _key, _key_len, (char*) (_value), _value_len); |
|
105 | 88 | ADD_ASSOC_ZVAL_EX((_zv), (_key), &z_int); \ |
106 | 89 | } while (0) |
107 | 90 | #define ADD_NEXT_INDEX_STRINGL(_zv, _value, _len) add_next_index_stringl(_zv, _value, _len); |
108 | | -#define phongo_free_object_arg zend_object |
109 | | -#define phongo_zpp_char_len size_t |
110 | | -#define ZEND_HASH_APPLY_COUNT(ht) (ht)->u.v.nApplyCount |
111 | | -#define PHONGO_RETVAL_STRINGL(s, slen) RETVAL_STRINGL(s, slen) |
112 | | -#define PHONGO_RETURN_STRINGL(s, slen) RETURN_STRINGL(s, slen) |
113 | | -#define PHONGO_RETVAL_STRING(s) RETVAL_STRING(s) |
114 | | -#define PHONGO_RETURN_STRING(s) RETURN_STRING(s) |
115 | | -#define PHONGO_RETVAL_SMART_STR(val) PHONGO_RETVAL_STRINGL(ZSTR_VAL((val).s), ZSTR_LEN((val).s)); |
116 | | -#define ZVAL_RETVAL_TYPE zval |
| 91 | +#define PHONGO_RETVAL_SMART_STR(val) RETVAL_STRINGL(ZSTR_VAL((val).s), ZSTR_LEN((val).s)); |
117 | 92 | #define ZVAL_STATIC_INIT \ |
118 | 93 | { \ |
119 | 94 | { \ |
120 | 95 | 0 \ |
121 | 96 | } \ |
122 | 97 | } |
123 | | -#else /* PHP_VERSION_ID < 70000 */ |
124 | | -#define phongo_char char |
125 | | -#define phongo_long long |
126 | | -#define PHONGO_LONG_FORMAT "ld" |
127 | | -#define SIZEOF_PHONGO_LONG SIZEOF_LONG |
128 | | -#define ZSTR_VAL(str) str |
129 | | -#define phongo_create_object_retval zend_object_value |
130 | | -#define phongo_get_gc_table zval*** |
131 | | -#define PHONGO_ALLOC_OBJECT_T(_obj_t, _class_type) (_obj_t*) ecalloc(1, sizeof(_obj_t)) |
132 | | -#define PHONGO_TSRMLS_FETCH_FROM_CTX(user_data) TSRMLS_FETCH_FROM_CTX(user_data) |
133 | | -#define DECLARE_RETURN_VALUE_USED |
134 | | -#define EXCEPTION_P(_ex, _zp) _zp = _ex |
135 | | -#define ADD_ASSOC_STRING(_zv, _key, _value) add_assoc_string_ex(_zv, ZEND_STRS(_key), (char*) (_value), 1); |
136 | | -#define ADD_ASSOC_STRINGL(_zv, _key, _value, _len) add_assoc_stringl_ex(_zv, ZEND_STRS(_key), (char*) (_value), _len, 1); |
137 | | -#define ADD_ASSOC_STRING_EX(_zv, _key, _key_len, _value, _value_len) add_assoc_stringl_ex(_zv, _key, _key_len + 1, (char*) (_value), _value_len, 1); |
138 | | -#define ADD_ASSOC_LONG_EX(_zv, _key, _value) add_assoc_long_ex(_zv, ZEND_STRS(_key), _value); |
139 | | -#define ADD_ASSOC_ZVAL_EX(_zv, _key, _value) add_assoc_zval_ex(_zv, ZEND_STRS(_key), _value); |
140 | | -#define ADD_ASSOC_ZVAL(_zv, _key, _value) add_assoc_zval(_zv, _key, _value); |
141 | | -#define ADD_ASSOC_NULL_EX(_zv, _key) add_assoc_null_ex(_zv, ZEND_STRS(_key)); |
142 | | -#define ADD_ASSOC_BOOL_EX(_zv, _key, _value) add_assoc_bool_ex(_zv, ZEND_STRS(_key), _value); |
143 | | -#define ZVAL_INT64_STRING(_zv, _value) \ |
144 | | - do { \ |
145 | | - char tmp[24]; \ |
146 | | - int tmp_len; \ |
147 | | - tmp_len = snprintf(tmp, sizeof(tmp), "%" PRId64, (_value)); \ |
148 | | - ZVAL_STRINGL((_zv), tmp, tmp_len, 1); \ |
149 | | - } while (0) |
150 | 98 |
|
151 | | -#define ADD_ASSOC_INT64_AS_STRING(_zv, _key, _value) \ |
152 | | - do { \ |
153 | | - zval* z_int; \ |
154 | | - MAKE_STD_ZVAL(z_int); \ |
155 | | - ZVAL_INT64_STRING(z_int, (_value)); \ |
156 | | - ADD_ASSOC_ZVAL_EX((_zv), (_key), z_int); \ |
157 | | - } while (0) |
158 | | -#define ADD_NEXT_INDEX_STRINGL(_zv, _value, _len) add_next_index_stringl(_zv, _value, _len, 1); |
159 | | -#define Z_PHPDATE_P(object) ((php_date_obj*) zend_object_store_get_object(object TSRMLS_CC)) |
160 | | -#define Z_ISUNDEF(x) !x |
161 | | -#define ZVAL_UNDEF(x) \ |
162 | | - do { \ |
163 | | - (*x) = NULL; \ |
164 | | - } while (0) |
165 | | -#define ZVAL_ARR(z, a) \ |
166 | | - do { \ |
167 | | - HashTable* __arr = (a); \ |
168 | | - zval* __z = (z); \ |
169 | | - Z_ARRVAL_P(__z) = __arr; \ |
170 | | - Z_TYPE_P(__z) = IS_ARRAY; \ |
171 | | - } while (0); |
172 | | -#define ZVAL_DUP(z, v) \ |
173 | | - do { \ |
174 | | - zval* _z = (z); \ |
175 | | - const zval* _v = (v); \ |
176 | | - *_z = *_v; \ |
177 | | - INIT_PZVAL(_z); \ |
178 | | - zval_copy_ctor(_z); \ |
179 | | - } while (0); |
180 | | -#define phongo_free_object_arg void |
181 | | -#define phongo_zpp_char_len int |
182 | | -#define ZEND_HASH_APPLY_PROTECTION(ht) 1 |
183 | | -#define ZEND_HASH_GET_APPLY_COUNT(ht) ((ht)->nApplyCount) |
184 | | -#define ZEND_HASH_DEC_APPLY_COUNT(ht) ((ht)->nApplyCount -= 1) |
185 | | -#define ZEND_HASH_INC_APPLY_COUNT(ht) ((ht)->nApplyCount += 1) |
186 | | -#define PHONGO_RETVAL_STRINGL(s, slen) RETVAL_STRINGL(s, slen, 1) |
187 | | -#define PHONGO_RETURN_STRINGL(s, slen) RETURN_STRINGL(s, slen, 1) |
188 | | -#define PHONGO_RETVAL_STRING(s) RETVAL_STRING(s, 1) |
189 | | -#define PHONGO_RETURN_STRING(s) RETURN_STRING(s, 1) |
190 | | -#define PHONGO_RETVAL_SMART_STR(val) PHONGO_RETVAL_STRINGL((val).c, (val).len); |
191 | | -#define ZVAL_RETVAL_TYPE zval* |
192 | | -#define ZVAL_STATIC_INIT zval_used_for_init |
193 | | -#endif |
194 | | - |
195 | | -#if SIZEOF_PHONGO_LONG == 8 |
| 99 | +#if SIZEOF_ZEND_LONG == 8 |
196 | 100 | #define ADD_INDEX_INT64(_zv, _index, _value) add_index_long((_zv), (_index), (_value)) |
197 | 101 | #define ADD_NEXT_INDEX_INT64(_zv, _value) add_next_index_long((_zv), (_value)) |
198 | 102 | #define ADD_ASSOC_INT64(_zv, _key, _value) add_assoc_long((_zv), (_key), (_value)) |
199 | 103 | #define ZVAL_INT64(_zv, _value) ZVAL_LONG((_zv), (_value)) |
200 | | -#elif SIZEOF_PHONGO_LONG == 4 |
201 | | -#if PHP_VERSION_ID >= 70000 |
202 | | -#define ADD_INDEX_INT64(_zv, _index, _value) \ |
203 | | - if ((_value) > INT32_MAX || (_value) < INT32_MIN) { \ |
204 | | - zval zchild; \ |
205 | | - php_phongo_bson_new_int64(&zchild, (_value) TSRMLS_CC); \ |
206 | | - add_index_zval((_zv), (_index), &zchild); \ |
207 | | - } else { \ |
208 | | - add_index_long((_zv), (_index), (_value)); \ |
209 | | - } |
210 | | -#define ADD_NEXT_INDEX_INT64(_zv, _value) \ |
211 | | - if ((_value) > INT32_MAX || (_value) < INT32_MIN) { \ |
212 | | - zval zchild; \ |
213 | | - php_phongo_bson_new_int64(&zchild, (_value) TSRMLS_CC); \ |
214 | | - add_next_index_zval((_zv), &zchild); \ |
215 | | - } else { \ |
216 | | - add_next_index_long((_zv), (_value)); \ |
217 | | - } |
218 | | -#define ADD_ASSOC_INT64(_zv, _key, _value) \ |
219 | | - if ((_value) > INT32_MAX || (_value) < INT32_MIN) { \ |
220 | | - zval zchild; \ |
221 | | - php_phongo_bson_new_int64(&zchild, (_value) TSRMLS_CC); \ |
222 | | - add_assoc_zval((_zv), (_key), &zchild); \ |
223 | | - } else { \ |
224 | | - add_assoc_long((_zv), (_key), (_value)); \ |
225 | | - } |
226 | | -#else /* PHP_VERSION_ID < 70000 */ |
227 | | -#define ADD_INDEX_INT64(_zv, _index, _value) \ |
228 | | - if ((_value) > INT32_MAX || (_value) < INT32_MIN) { \ |
229 | | - zval* zchild = NULL; \ |
230 | | - TSRMLS_FETCH(); \ |
231 | | - MAKE_STD_ZVAL(zchild); \ |
232 | | - php_phongo_bson_new_int64(zchild, (_value) TSRMLS_CC); \ |
233 | | - add_index_zval((_zv), (_index), zchild); \ |
234 | | - } else { \ |
235 | | - add_index_long((_zv), (_index), (_value)); \ |
| 104 | +#elif SIZEOF_ZEND_LONG == 4 |
| 105 | +#define ADD_INDEX_INT64(_zv, _index, _value) \ |
| 106 | + if ((_value) > INT32_MAX || (_value) < INT32_MIN) { \ |
| 107 | + zval zchild; \ |
| 108 | + php_phongo_bson_new_int64(&zchild, (_value)); \ |
| 109 | + add_index_zval((_zv), (_index), &zchild); \ |
| 110 | + } else { \ |
| 111 | + add_index_long((_zv), (_index), (_value)); \ |
236 | 112 | } |
237 | | -#define ADD_NEXT_INDEX_INT64(_zv, _value) \ |
238 | | - if ((_value) > INT32_MAX || (_value) < INT32_MIN) { \ |
239 | | - zval* zchild = NULL; \ |
240 | | - TSRMLS_FETCH(); \ |
241 | | - MAKE_STD_ZVAL(zchild); \ |
242 | | - php_phongo_bson_new_int64(zchild, (_value) TSRMLS_CC); \ |
243 | | - add_next_index_zval((_zv), zchild); \ |
244 | | - } else { \ |
245 | | - add_next_index_long((_zv), (_value)); \ |
| 113 | +#define ADD_NEXT_INDEX_INT64(_zv, _value) \ |
| 114 | + if ((_value) > INT32_MAX || (_value) < INT32_MIN) { \ |
| 115 | + zval zchild; \ |
| 116 | + php_phongo_bson_new_int64(&zchild, (_value)); \ |
| 117 | + add_next_index_zval((_zv), &zchild); \ |
| 118 | + } else { \ |
| 119 | + add_next_index_long((_zv), (_value)); \ |
246 | 120 | } |
247 | | -#define ADD_ASSOC_INT64(_zv, _key, _value) \ |
248 | | - if ((_value) > INT32_MAX || (_value) < INT32_MIN) { \ |
249 | | - zval* zchild = NULL; \ |
250 | | - TSRMLS_FETCH(); \ |
251 | | - MAKE_STD_ZVAL(zchild); \ |
252 | | - php_phongo_bson_new_int64(zchild, (_value) TSRMLS_CC); \ |
253 | | - add_assoc_zval((_zv), (_key), zchild); \ |
254 | | - } else { \ |
255 | | - add_assoc_long((_zv), (_key), (_value)); \ |
| 121 | +#define ADD_ASSOC_INT64(_zv, _key, _value) \ |
| 122 | + if ((_value) > INT32_MAX || (_value) < INT32_MIN) { \ |
| 123 | + zval zchild; \ |
| 124 | + php_phongo_bson_new_int64(&zchild, (_value)); \ |
| 125 | + add_assoc_zval((_zv), (_key), &zchild); \ |
| 126 | + } else { \ |
| 127 | + add_assoc_long((_zv), (_key), (_value)); \ |
256 | 128 | } |
257 | | -#endif /* PHP_VERSION_ID */ |
258 | | -#define ZVAL_INT64(_zv, _value) \ |
259 | | - if ((_value) > INT32_MAX || (_value) < INT32_MIN) { \ |
260 | | - php_phongo_bson_new_int64((_zv), (_value) TSRMLS_CC); \ |
261 | | - } else { \ |
262 | | - ZVAL_LONG((_zv), (_value)); \ |
| 129 | +#define ZVAL_INT64(_zv, _value) \ |
| 130 | + if ((_value) > INT32_MAX || (_value) < INT32_MIN) { \ |
| 131 | + php_phongo_bson_new_int64((_zv), (_value)); \ |
| 132 | + } else { \ |
| 133 | + ZVAL_LONG((_zv), (_value)); \ |
263 | 134 | } |
264 | | -#else /* SIZEOF_PHONGO_LONG != 8 && SIZEOF_PHONGO_LONG != 4 */ |
| 135 | +#else /* SIZEOF_ZEND_LONG != 8 && SIZEOF_ZEND_LONG != 4 */ |
265 | 136 | #error Unsupported architecture (integers are neither 32-bit nor 64-bit) |
266 | | -#endif /* SIZEOF_PHONGO_LONG */ |
| 137 | +#endif /* SIZEOF_ZEND_LONG */ |
267 | 138 |
|
268 | | -void phongo_add_exception_prop(const char* prop, int prop_len, zval* value TSRMLS_DC); |
| 139 | +void phongo_add_exception_prop(const char* prop, int prop_len, zval* value); |
269 | 140 | zend_bool php_phongo_zend_hash_apply_protection_begin(HashTable* ht); |
270 | 141 | zend_bool php_phongo_zend_hash_apply_protection_end(HashTable* ht); |
271 | 142 |
|
|
0 commit comments