28
28
29
29
#include "php.h"
30
30
#include "php_ini.h"
31
- #include "php_VARIANT .h"
31
+ #include "variant .h"
32
32
#include "conversion.h"
33
33
#include "ext/standard/info.h"
34
34
35
35
#include <unknwn.h>
36
36
37
+ PHP_MINIT_FUNCTION (VARIANT );
38
+ PHP_MSHUTDOWN_FUNCTION (VARIANT );
39
+
40
+ int php_VARIANT_get_le_variant ();
37
41
void php_VARIANT_call_function_handler (INTERNAL_FUNCTION_PARAMETERS , zend_property_reference * property_reference );
38
42
pval php_VARIANT_get_property_handler (zend_property_reference * property_reference );
39
43
static int do_VARIANT_propset (VARIANT * var_arg , pval * arg_property , pval * value );
@@ -108,18 +112,23 @@ PHP_MSHUTDOWN_FUNCTION(VARIANT)
108
112
return SUCCESS ;
109
113
}
110
114
115
+ int php_VARIANT_get_le_variant ()
116
+ {
117
+ return le_variant ;
118
+ }
119
+
111
120
void php_VARIANT_call_function_handler (INTERNAL_FUNCTION_PARAMETERS , zend_property_reference * property_reference )
112
121
{
113
122
pval * object = property_reference -> object ;
114
123
zend_overloaded_element * function_name = (zend_overloaded_element * ) property_reference -> elements_list -> tail -> data ;
115
124
VARIANT * pVar ;
116
125
117
- if ((zend_llist_count (property_reference -> elements_list )== 1 ) && !strcmp (function_name -> element . value . str . val , "variant" ))
126
+ if ((zend_llist_count (property_reference -> elements_list )== 1 ) && !strcmp (Z_STRVAL ( function_name -> element ) , "variant" ))
118
127
{
119
128
/* constructor */
120
129
pval * object_handle , * data , * type , * code_page ;
121
130
122
- pVar = emalloc ( sizeof ( VARIANT ) );
131
+ ALLOC_VARIANT ( pVar );
123
132
VariantInit (pVar );
124
133
125
134
switch (ZEND_NUM_ARGS ())
@@ -148,8 +157,7 @@ void php_VARIANT_call_function_handler(INTERNAL_FUNCTION_PARAMETERS, zend_proper
148
157
break ;
149
158
}
150
159
151
- return_value -> type = IS_LONG ;
152
- return_value -> value .lval = zend_list_insert (pVar , le_variant );
160
+ RETVAL_LONG (zend_list_insert (pVar , IS_VARIANT ));
153
161
154
162
if (!zend_is_true (return_value ))
155
163
{
@@ -177,9 +185,9 @@ pval php_VARIANT_get_property_handler(zend_property_reference *property_referenc
177
185
178
186
/* fetch the VARIANT structure */
179
187
zend_hash_index_find (object -> value .obj .properties , 0 , (void * * ) & var_handle );
180
- var_arg = zend_list_find (( * var_handle )-> value . lval , & type );
188
+ var_arg = zend_list_find (Z_LVAL_PP ( var_handle ), & type );
181
189
182
- if (!var_arg || (type != le_variant ))
190
+ if (!var_arg || (type != IS_VARIANT ))
183
191
{
184
192
var_reset (& result );
185
193
}
@@ -197,10 +205,9 @@ pval php_VARIANT_get_property_handler(zend_property_reference *property_referenc
197
205
{
198
206
php_variant_to_pval (var_arg , & result , 0 , codepage );
199
207
}
200
- else if (!strcmp (overloaded_property -> element . value . str . val , "type" ))
208
+ else if (!strcmp (Z_STRVAL ( overloaded_property -> element ) , "type" ))
201
209
{
202
- result .value .lval = var_arg -> vt ;
203
- result .type = IS_LONG ;
210
+ ZVAL_LONG (& result , V_VT (var_arg ))
204
211
}
205
212
else
206
213
{
@@ -230,9 +237,9 @@ int php_VARIANT_set_property_handler(zend_property_reference *property_reference
230
237
231
238
/* fetch the VARIANT structure */
232
239
zend_hash_index_find (object -> value .obj .properties , 0 , (void * * ) & var_handle );
233
- var_arg = zend_list_find (( * var_handle )-> value . lval , & type );
240
+ var_arg = zend_list_find (Z_LVAL_PP ( var_handle ), & type );
234
241
235
- if (!var_arg || (type != le_variant ))
242
+ if (!var_arg || (type != IS_VARIANT ))
236
243
return FAILURE ;
237
244
238
245
overloaded_property = (zend_overloaded_element * ) property_reference -> elements_list -> head -> data ;
@@ -245,163 +252,163 @@ static int do_VARIANT_propset(VARIANT *var_arg, pval *arg_property, pval *value)
245
252
{
246
253
pval type ;
247
254
248
- type . type = IS_STRING ;
255
+ Z_TYPE ( type ) = IS_STRING ;
249
256
250
- if (!strcmp (arg_property -> value . str . val , "bVal" ))
257
+ if (!strcmp (Z_STRVAL_P ( arg_property ) , "bVal" ))
251
258
{
252
- type . value . lval = VT_UI1 ;
259
+ Z_LVAL ( type ) = VT_UI1 ;
253
260
}
254
- else if (!strcmp (arg_property -> value . str . val , "iVal" ))
261
+ else if (!strcmp (Z_STRVAL_P ( arg_property ) , "iVal" ))
255
262
{
256
- type . value . lval = VT_I2 ;
263
+ Z_LVAL ( type ) = VT_I2 ;
257
264
}
258
- else if (!strcmp (arg_property -> value . str . val , "lVal" ))
265
+ else if (!strcmp (Z_STRVAL_P ( arg_property ) , "lVal" ))
259
266
{
260
- type . value . lval = VT_I4 ;
267
+ Z_LVAL ( type ) = VT_I4 ;
261
268
}
262
- else if (!strcmp (arg_property -> value . str . val , "fltVal" ))
269
+ else if (!strcmp (Z_STRVAL_P ( arg_property ) , "fltVal" ))
263
270
{
264
- type . value . lval = VT_R4 ;
271
+ Z_LVAL ( type ) = VT_R4 ;
265
272
}
266
- else if (!strcmp (arg_property -> value . str . val , "dblVal" ))
273
+ else if (!strcmp (Z_STRVAL_P ( arg_property ) , "dblVal" ))
267
274
{
268
- type . value . lval = VT_R8 ;
275
+ Z_LVAL ( type ) = VT_R8 ;
269
276
}
270
- else if (!strcmp (arg_property -> value . str . val , "boolVal" ))
277
+ else if (!strcmp (Z_STRVAL_P ( arg_property ) , "boolVal" ))
271
278
{
272
- type . value . lval = VT_BOOL ;
279
+ Z_LVAL ( type ) = VT_BOOL ;
273
280
}
274
- else if (!strcmp (arg_property -> value . str . val , "scode" ))
281
+ else if (!strcmp (Z_STRVAL_P ( arg_property ) , "scode" ))
275
282
{
276
- type . value . lval = VT_ERROR ;
283
+ Z_LVAL ( type ) = VT_ERROR ;
277
284
}
278
- else if (!strcmp (arg_property -> value . str . val , "cyVal" ))
285
+ else if (!strcmp (Z_STRVAL_P ( arg_property ) , "cyVal" ))
279
286
{
280
- type . value . lval = VT_CY ;
287
+ Z_LVAL ( type ) = VT_CY ;
281
288
}
282
- else if (!strcmp (arg_property -> value . str . val , "date" ))
289
+ else if (!strcmp (Z_STRVAL_P ( arg_property ) , "date" ))
283
290
{
284
- type . value . lval = VT_DATE ;
291
+ Z_LVAL ( type ) = VT_DATE ;
285
292
}
286
- else if (!strcmp (arg_property -> value . str . val , "bstrVal" ))
293
+ else if (!strcmp (Z_STRVAL_P ( arg_property ) , "bstrVal" ))
287
294
{
288
- type . value . lval = VT_BSTR ;
295
+ Z_LVAL ( type ) = VT_BSTR ;
289
296
}
290
- else if (!strcmp (arg_property -> value . str . val , "pdecVal" ))
297
+ else if (!strcmp (Z_STRVAL_P ( arg_property ) , "pdecVal" ))
291
298
{
292
- type . value . lval = VT_DECIMAL |VT_BYREF ;
299
+ Z_LVAL ( type ) = VT_DECIMAL |VT_BYREF ;
293
300
}
294
- else if (!strcmp (arg_property -> value . str . val , "punkVal" ))
301
+ else if (!strcmp (Z_STRVAL_P ( arg_property ) , "punkVal" ))
295
302
{
296
- type . value . lval = VT_UNKNOWN ;
303
+ Z_LVAL ( type ) = VT_UNKNOWN ;
297
304
}
298
- else if (!strcmp (arg_property -> value . str . val , "pdispVal" ))
305
+ else if (!strcmp (Z_STRVAL_P ( arg_property ) , "pdispVal" ))
299
306
{
300
- type . value . lval = VT_DISPATCH ;
307
+ Z_LVAL ( type ) = VT_DISPATCH ;
301
308
}
302
- else if (!strcmp (arg_property -> value . str . val , "parray" ))
309
+ else if (!strcmp (Z_STRVAL_P ( arg_property ) , "parray" ))
303
310
{
304
- type . value . lval = VT_ARRAY ;
311
+ Z_LVAL ( type ) = VT_ARRAY ;
305
312
}
306
- else if (!strcmp (arg_property -> value . str . val , "pbVal" ))
313
+ else if (!strcmp (Z_STRVAL_P ( arg_property ) , "pbVal" ))
307
314
{
308
- type . value . lval = VT_UI1 |VT_BYREF ;
315
+ Z_LVAL ( type ) = VT_UI1 |VT_BYREF ;
309
316
}
310
- else if (!strcmp (arg_property -> value . str . val , "piVal" ))
317
+ else if (!strcmp (Z_STRVAL_P ( arg_property ) , "piVal" ))
311
318
{
312
- type . value . lval = VT_I2 |VT_BYREF ;
319
+ Z_LVAL ( type ) = VT_I2 |VT_BYREF ;
313
320
}
314
- else if (!strcmp (arg_property -> value . str . val , "plVal" ))
321
+ else if (!strcmp (Z_STRVAL_P ( arg_property ) , "plVal" ))
315
322
{
316
- type . value . lval = VT_I4 |VT_BYREF ;
323
+ Z_LVAL ( type ) = VT_I4 |VT_BYREF ;
317
324
}
318
- else if (!strcmp (arg_property -> value . str . val , "pfltVal" ))
325
+ else if (!strcmp (Z_STRVAL_P ( arg_property ) , "pfltVal" ))
319
326
{
320
- type . value . lval = VT_R4 |VT_BYREF ;
327
+ Z_LVAL ( type ) = VT_R4 |VT_BYREF ;
321
328
}
322
- else if (!strcmp (arg_property -> value . str . val , "pdblVal" ))
329
+ else if (!strcmp (Z_STRVAL_P ( arg_property ) , "pdblVal" ))
323
330
{
324
- type . value . lval = VT_R8 |VT_BYREF ;
331
+ Z_LVAL ( type ) = VT_R8 |VT_BYREF ;
325
332
}
326
- else if (!strcmp (arg_property -> value . str . val , "pboolVal" ))
333
+ else if (!strcmp (Z_STRVAL_P ( arg_property ) , "pboolVal" ))
327
334
{
328
- type . value . lval = VT_BOOL |VT_BYREF ;
335
+ Z_LVAL ( type ) = VT_BOOL |VT_BYREF ;
329
336
}
330
- else if (!strcmp (arg_property -> value . str . val , "pscode" ))
337
+ else if (!strcmp (Z_STRVAL_P ( arg_property ) , "pscode" ))
331
338
{
332
- type . value . lval = VT_ERROR |VT_BYREF ;
339
+ Z_LVAL ( type ) = VT_ERROR |VT_BYREF ;
333
340
}
334
- else if (!strcmp (arg_property -> value . str . val , "pcyVal" ))
341
+ else if (!strcmp (Z_STRVAL_P ( arg_property ) , "pcyVal" ))
335
342
{
336
- type . value . lval = VT_CY |VT_BYREF ;
343
+ Z_LVAL ( type ) = VT_CY |VT_BYREF ;
337
344
}
338
- else if (!strcmp (arg_property -> value . str . val , "pdate" ))
345
+ else if (!strcmp (Z_STRVAL_P ( arg_property ) , "pdate" ))
339
346
{
340
- type . value . lval = VT_DATE |VT_BYREF ;
347
+ Z_LVAL ( type ) = VT_DATE |VT_BYREF ;
341
348
}
342
- else if (!strcmp (arg_property -> value . str . val , "pbstrVal" ))
349
+ else if (!strcmp (Z_STRVAL_P ( arg_property ) , "pbstrVal" ))
343
350
{
344
- type . value . lval = VT_BSTR |VT_BYREF ;
351
+ Z_LVAL ( type ) = VT_BSTR |VT_BYREF ;
345
352
}
346
- else if (!strcmp (arg_property -> value . str . val , "ppunkVal" ))
353
+ else if (!strcmp (Z_STRVAL_P ( arg_property ) , "ppunkVal" ))
347
354
{
348
- type . value . lval = VT_UNKNOWN |VT_BYREF ;
355
+ Z_LVAL ( type ) = VT_UNKNOWN |VT_BYREF ;
349
356
}
350
- else if (!strcmp (arg_property -> value . str . val , "ppdispVal" ))
357
+ else if (!strcmp (Z_STRVAL_P ( arg_property ) , "ppdispVal" ))
351
358
{
352
- type . value . lval = VT_DISPATCH |VT_BYREF ;
359
+ Z_LVAL ( type ) = VT_DISPATCH |VT_BYREF ;
353
360
}
354
- else if (!strcmp (arg_property -> value . str . val , "pparray" ))
361
+ else if (!strcmp (Z_STRVAL_P ( arg_property ) , "pparray" ))
355
362
{
356
- type . value . lval = VT_ARRAY |VT_BYREF ;
363
+ Z_LVAL ( type ) = VT_ARRAY |VT_BYREF ;
357
364
}
358
- else if (!strcmp (arg_property -> value . str . val , "pvarVal" ))
365
+ else if (!strcmp (Z_STRVAL_P ( arg_property ) , "pvarVal" ))
359
366
{
360
- type . value . lval = VT_VARIANT |VT_BYREF ;
367
+ Z_LVAL ( type ) = VT_VARIANT |VT_BYREF ;
361
368
}
362
- else if (!strcmp (arg_property -> value . str . val , "byref" ))
369
+ else if (!strcmp (Z_STRVAL_P ( arg_property ) , "byref" ))
363
370
{
364
- type . value . lval = VT_BYREF ;
371
+ Z_LVAL ( type ) = VT_BYREF ;
365
372
}
366
- else if (!strcmp (arg_property -> value . str . val , "cVal" ))
373
+ else if (!strcmp (Z_STRVAL_P ( arg_property ) , "cVal" ))
367
374
{
368
- type . value . lval = VT_I1 ;
375
+ Z_LVAL ( type ) = VT_I1 ;
369
376
}
370
- else if (!strcmp (arg_property -> value . str . val , "uiVal" ))
377
+ else if (!strcmp (Z_STRVAL_P ( arg_property ) , "uiVal" ))
371
378
{
372
- type . value . lval = VT_UI2 ;
379
+ Z_LVAL ( type ) = VT_UI2 ;
373
380
}
374
- else if (!strcmp (arg_property -> value . str . val , "ulVal" ))
381
+ else if (!strcmp (Z_STRVAL_P ( arg_property ) , "ulVal" ))
375
382
{
376
- type . value . lval = VT_UI4 ;
383
+ Z_LVAL ( type ) = VT_UI4 ;
377
384
}
378
- else if (!strcmp (arg_property -> value . str . val , "intVal" ))
385
+ else if (!strcmp (Z_STRVAL_P ( arg_property ) , "intVal" ))
379
386
{
380
- type . value . lval = VT_INT ;
387
+ Z_LVAL ( type ) = VT_INT ;
381
388
}
382
- else if (!strcmp (arg_property -> value . str . val , "uintVal" ))
389
+ else if (!strcmp (Z_STRVAL_P ( arg_property ) , "uintVal" ))
383
390
{
384
- type . value . lval = VT_UINT |VT_BYREF ;
391
+ Z_LVAL ( type ) = VT_UINT |VT_BYREF ;
385
392
}
386
- else if (!strcmp (arg_property -> value . str . val , "pcVal" ))
393
+ else if (!strcmp (Z_STRVAL_P ( arg_property ) , "pcVal" ))
387
394
{
388
- type . value . lval = VT_I1 |VT_BYREF ;
395
+ Z_LVAL ( type ) = VT_I1 |VT_BYREF ;
389
396
}
390
- else if (!strcmp (arg_property -> value . str . val , "puiVal" ))
397
+ else if (!strcmp (Z_STRVAL_P ( arg_property ) , "puiVal" ))
391
398
{
392
- type . value . lval = VT_UI2 |VT_BYREF ;
399
+ Z_LVAL ( type ) = VT_UI2 |VT_BYREF ;
393
400
}
394
- else if (!strcmp (arg_property -> value . str . val , "pulVal" ))
401
+ else if (!strcmp (Z_STRVAL_P ( arg_property ) , "pulVal" ))
395
402
{
396
- type . value . lval = VT_UI4 |VT_BYREF ;
403
+ Z_LVAL ( type ) = VT_UI4 |VT_BYREF ;
397
404
}
398
- else if (!strcmp (arg_property -> value . str . val , "pintVal" ))
405
+ else if (!strcmp (Z_STRVAL_P ( arg_property ) , "pintVal" ))
399
406
{
400
- type . value . lval = VT_INT |VT_BYREF ;
407
+ Z_LVAL ( type ) = VT_INT |VT_BYREF ;
401
408
}
402
- else if (!strcmp (arg_property -> value . str . val , "puintVal" ))
409
+ else if (!strcmp (Z_STRVAL_P ( arg_property ) , "puintVal" ))
403
410
{
404
- type . value . lval = VT_UINT |VT_BYREF ;
411
+ Z_LVAL ( type ) = VT_UINT |VT_BYREF ;
405
412
}
406
413
else
407
414
{
0 commit comments