summaryrefslogtreecommitdiff
path: root/ext/rpc/com/variant.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/rpc/com/variant.c')
-rw-r--r--ext/rpc/com/variant.c221
1 files changed, 71 insertions, 150 deletions
diff --git a/ext/rpc/com/variant.c b/ext/rpc/com/variant.c
index b8f2590101..5fb5760925 100644
--- a/ext/rpc/com/variant.c
+++ b/ext/rpc/com/variant.c
@@ -44,10 +44,12 @@ static int le_variant;
static int codepage;
static zend_class_entry VARIANT_class_entry;
+
function_entry VARIANT_functions[] = {
{NULL, NULL, NULL}
};
+
static PHP_MINFO_FUNCTION(VARIANT)
{
php_info_print_table_start();
@@ -55,10 +57,12 @@ static PHP_MINFO_FUNCTION(VARIANT)
php_info_print_table_end();
}
+
zend_module_entry VARIANT_module_entry = {
"variant", VARIANT_functions, PHP_MINIT(VARIANT), PHP_MSHUTDOWN(VARIANT), NULL, NULL, PHP_MINFO(VARIANT), STANDARD_MODULE_PROPERTIES
};
+
PHP_MINIT_FUNCTION(VARIANT)
{
le_variant = zend_register_list_destructors_ex(php_VARIANT_destructor, NULL, "VARIANT", module_number);
@@ -109,60 +113,60 @@ PHP_MINIT_FUNCTION(VARIANT)
return SUCCESS;
}
+
PHP_MSHUTDOWN_FUNCTION(VARIANT)
{
return SUCCESS;
}
+
PHPAPI int php_VARIANT_get_le_variant()
{
return le_variant;
}
+
static void php_VARIANT_call_function_handler(INTERNAL_FUNCTION_PARAMETERS, zend_property_reference *property_reference)
{
pval *object = property_reference->object;
zend_overloaded_element *function_name = (zend_overloaded_element *) property_reference->elements_list->tail->data;
VARIANT *pVar;
- if((zend_llist_count(property_reference->elements_list)==1) && !strcmp(Z_STRVAL(function_name->element), "variant"))
- {
+ if ((zend_llist_count(property_reference->elements_list)==1) && !strcmp(Z_STRVAL(function_name->element), "variant")) {
/* constructor */
pval *object_handle, *data, *type, *code_page;
ALLOC_VARIANT(pVar);
VariantInit(pVar);
- switch(ZEND_NUM_ARGS())
- {
+ switch (ZEND_NUM_ARGS()) {
case 0:
/* nothing to do */
break;
case 1:
- getParameters(ht, 1, &data);
+ zend_get_parameters(ht, 1, &data);
php_pval_to_variant(data, pVar, codepage TSRMLS_CC);
codepage = CP_ACP;
break;
case 2:
- getParameters(ht, 2, &data, &type);
+ zend_get_parameters(ht, 2, &data, &type);
php_pval_to_variant_ex(data, pVar, type, codepage TSRMLS_CC);
codepage = CP_ACP;
break;
case 3:
- getParameters(ht, 3, &data, &type, &code_page);
+ zend_get_parameters(ht, 3, &data, &type, &code_page);
php_pval_to_variant_ex(data, pVar, type, codepage TSRMLS_CC);
convert_to_long(code_page);
codepage = code_page->value.lval;
break;
default:
- WRONG_PARAM_COUNT;
+ ZEND_WRONG_PARAM_COUNT();
break;
}
RETVAL_LONG(zend_list_insert(pVar, IS_VARIANT));
- if(!zend_is_true(return_value))
- {
+ if (!zend_is_true(return_value)) {
ZVAL_FALSE(object);
return;
}
@@ -176,43 +180,35 @@ static void php_VARIANT_call_function_handler(INTERNAL_FUNCTION_PARAMETERS, zend
}
}
+
static pval php_VARIANT_get_property_handler(zend_property_reference *property_reference)
{
zend_overloaded_element *overloaded_property;
int type;
- TSRMLS_FETCH();
-
pval result, **var_handle, *object = property_reference->object;
VARIANT *var_arg;
+ TSRMLS_FETCH();
+
/* fetch the VARIANT structure */
zend_hash_index_find(Z_OBJPROP_P(object), 0, (void **) &var_handle);
var_arg = zend_list_find(Z_LVAL_PP(var_handle), &type);
- if(!var_arg || (type != IS_VARIANT))
- {
+ if (!var_arg || (type != IS_VARIANT)) {
ZVAL_FALSE(&result);
- }
- else
- {
+ } else {
overloaded_property = (zend_overloaded_element *) property_reference->elements_list->head->data;
- switch(overloaded_property->type)
- {
+ switch (overloaded_property->type) {
case OE_IS_ARRAY:
ZVAL_FALSE(&result);
break;
case OE_IS_OBJECT:
- if(!strcmp(overloaded_property->element.value.str.val, "value"))
- {
- php_variant_to_pval(var_arg, &result, 0, codepage TSRMLS_CC);
- }
- else if(!strcmp(Z_STRVAL(overloaded_property->element), "type"))
- {
+ if (!strcmp(overloaded_property->element.value.str.val, "value")) {
+ php_variant_to_pval(var_arg, &result, codepage TSRMLS_CC);
+ } else if (!strcmp(Z_STRVAL(overloaded_property->element), "type")) {
ZVAL_LONG(&result, V_VT(var_arg))
- }
- else
- {
+ } else {
ZVAL_FALSE(&result);
php_error(E_WARNING, "Unknown member.");
}
@@ -229,21 +225,23 @@ static pval php_VARIANT_get_property_handler(zend_property_reference *property_r
return result;
}
+
static int php_VARIANT_set_property_handler(zend_property_reference *property_reference, pval *value)
{
zend_overloaded_element *overloaded_property;
int type;
- TSRMLS_FETCH();
-
pval **var_handle, *object = property_reference->object;
VARIANT *var_arg;
+ TSRMLS_FETCH();
+
/* fetch the VARIANT structure */
zend_hash_index_find(Z_OBJPROP_P(object), 0, (void **) &var_handle);
var_arg = zend_list_find(Z_LVAL_PP(var_handle), &type);
- if(!var_arg || (type != IS_VARIANT))
+ if (!var_arg || (type != IS_VARIANT)) {
return FAILURE;
+ }
overloaded_property = (zend_overloaded_element *) property_reference->elements_list->head->data;
do_VARIANT_propset(var_arg, &overloaded_property->element, value TSRMLS_CC);
@@ -251,170 +249,92 @@ static int php_VARIANT_set_property_handler(zend_property_reference *property_re
return SUCCESS;
}
+
static int do_VARIANT_propset(VARIANT *var_arg, pval *arg_property, pval *value TSRMLS_DC)
{
pval type;
Z_TYPE(type) = IS_STRING;
- if(!strcmp(Z_STRVAL_P(arg_property), "bVal"))
- {
+ if (!strcmp(Z_STRVAL_P(arg_property), "bVal")) {
Z_LVAL(type) = VT_UI1;
- }
- else if(!strcmp(Z_STRVAL_P(arg_property), "iVal"))
- {
+ } else if (!strcmp(Z_STRVAL_P(arg_property), "iVal")) {
Z_LVAL(type) = VT_I2;
- }
- else if(!strcmp(Z_STRVAL_P(arg_property), "lVal"))
- {
+ } else if (!strcmp(Z_STRVAL_P(arg_property), "lVal")) {
Z_LVAL(type) = VT_I4;
- }
- else if(!strcmp(Z_STRVAL_P(arg_property), "fltVal"))
- {
+ } else if (!strcmp(Z_STRVAL_P(arg_property), "fltVal")) {
Z_LVAL(type) = VT_R4;
- }
- else if(!strcmp(Z_STRVAL_P(arg_property), "dblVal"))
- {
+ } else if (!strcmp(Z_STRVAL_P(arg_property), "dblVal")) {
Z_LVAL(type) = VT_R8;
- }
- else if(!strcmp(Z_STRVAL_P(arg_property), "boolVal"))
- {
+ } else if (!strcmp(Z_STRVAL_P(arg_property), "boolVal")) {
Z_LVAL(type) = VT_BOOL;
- }
- else if(!strcmp(Z_STRVAL_P(arg_property), "scode"))
- {
+ } else if (!strcmp(Z_STRVAL_P(arg_property), "scode")) {
Z_LVAL(type) = VT_ERROR;
- }
- else if(!strcmp(Z_STRVAL_P(arg_property), "cyVal"))
- {
+ } else if (!strcmp(Z_STRVAL_P(arg_property), "cyVal")) {
Z_LVAL(type) = VT_CY;
- }
- else if(!strcmp(Z_STRVAL_P(arg_property), "date"))
- {
+ } else if (!strcmp(Z_STRVAL_P(arg_property), "date")) {
Z_LVAL(type) = VT_DATE;
- }
- else if(!strcmp(Z_STRVAL_P(arg_property), "bstrVal"))
- {
+ } else if (!strcmp(Z_STRVAL_P(arg_property), "bstrVal")) {
Z_LVAL(type) = VT_BSTR;
- }
- else if(!strcmp(Z_STRVAL_P(arg_property), "pdecVal"))
- {
+ } else if (!strcmp(Z_STRVAL_P(arg_property), "pdecVal")) {
Z_LVAL(type) = VT_DECIMAL|VT_BYREF;
- }
- else if(!strcmp(Z_STRVAL_P(arg_property), "punkVal"))
- {
+ } else if (!strcmp(Z_STRVAL_P(arg_property), "punkVal")) {
Z_LVAL(type) = VT_UNKNOWN;
- }
- else if(!strcmp(Z_STRVAL_P(arg_property), "pdispVal"))
- {
+ } else if (!strcmp(Z_STRVAL_P(arg_property), "pdispVal")) {
Z_LVAL(type) = VT_DISPATCH;
- }
- else if(!strcmp(Z_STRVAL_P(arg_property), "parray"))
- {
+ } else if (!strcmp(Z_STRVAL_P(arg_property), "parray")) {
Z_LVAL(type) = VT_ARRAY;
- }
- else if(!strcmp(Z_STRVAL_P(arg_property), "pbVal"))
- {
+ } else if (!strcmp(Z_STRVAL_P(arg_property), "pbVal")) {
Z_LVAL(type) = VT_UI1|VT_BYREF;
- }
- else if(!strcmp(Z_STRVAL_P(arg_property), "piVal"))
- {
+ } else if (!strcmp(Z_STRVAL_P(arg_property), "piVal")) {
Z_LVAL(type) = VT_I2|VT_BYREF;
- }
- else if(!strcmp(Z_STRVAL_P(arg_property), "plVal"))
- {
+ } else if (!strcmp(Z_STRVAL_P(arg_property), "plVal")) {
Z_LVAL(type) = VT_I4|VT_BYREF;
- }
- else if(!strcmp(Z_STRVAL_P(arg_property), "pfltVal"))
- {
+ } else if (!strcmp(Z_STRVAL_P(arg_property), "pfltVal")) {
Z_LVAL(type) = VT_R4|VT_BYREF;
- }
- else if(!strcmp(Z_STRVAL_P(arg_property), "pdblVal"))
- {
+ } else if (!strcmp(Z_STRVAL_P(arg_property), "pdblVal")) {
Z_LVAL(type) = VT_R8|VT_BYREF;
- }
- else if(!strcmp(Z_STRVAL_P(arg_property), "pboolVal"))
- {
+ } else if (!strcmp(Z_STRVAL_P(arg_property), "pboolVal")) {
Z_LVAL(type) = VT_BOOL|VT_BYREF;
- }
- else if(!strcmp(Z_STRVAL_P(arg_property), "pscode"))
- {
+ } else if (!strcmp(Z_STRVAL_P(arg_property), "pscode")) {
Z_LVAL(type) = VT_ERROR|VT_BYREF;
- }
- else if(!strcmp(Z_STRVAL_P(arg_property), "pcyVal"))
- {
+ } else if (!strcmp(Z_STRVAL_P(arg_property), "pcyVal")) {
Z_LVAL(type) = VT_CY|VT_BYREF;
- }
- else if(!strcmp(Z_STRVAL_P(arg_property), "pdate"))
- {
+ } else if (!strcmp(Z_STRVAL_P(arg_property), "pdate")) {
Z_LVAL(type) = VT_DATE|VT_BYREF;
- }
- else if(!strcmp(Z_STRVAL_P(arg_property), "pbstrVal"))
- {
+ } else if (!strcmp(Z_STRVAL_P(arg_property), "pbstrVal")) {
Z_LVAL(type) = VT_BSTR|VT_BYREF;
- }
- else if(!strcmp(Z_STRVAL_P(arg_property), "ppunkVal"))
- {
+ } else if (!strcmp(Z_STRVAL_P(arg_property), "ppunkVal")) {
Z_LVAL(type) = VT_UNKNOWN|VT_BYREF;
- }
- else if(!strcmp(Z_STRVAL_P(arg_property), "ppdispVal"))
- {
+ } else if (!strcmp(Z_STRVAL_P(arg_property), "ppdispVal")) {
Z_LVAL(type) = VT_DISPATCH|VT_BYREF;
- }
- else if(!strcmp(Z_STRVAL_P(arg_property), "pparray"))
- {
+ } else if (!strcmp(Z_STRVAL_P(arg_property), "pparray")) {
Z_LVAL(type) = VT_ARRAY|VT_BYREF;
- }
- else if(!strcmp(Z_STRVAL_P(arg_property), "pvarVal"))
- {
+ } else if (!strcmp(Z_STRVAL_P(arg_property), "pvarVal")) {
Z_LVAL(type) = VT_VARIANT|VT_BYREF;
- }
- else if(!strcmp(Z_STRVAL_P(arg_property), "byref"))
- {
+ } else if (!strcmp(Z_STRVAL_P(arg_property), "byref")) {
Z_LVAL(type) = VT_BYREF;
- }
- else if(!strcmp(Z_STRVAL_P(arg_property), "cVal"))
- {
+ } else if (!strcmp(Z_STRVAL_P(arg_property), "cVal")) {
Z_LVAL(type) = VT_I1;
- }
- else if(!strcmp(Z_STRVAL_P(arg_property), "uiVal"))
- {
+ } else if (!strcmp(Z_STRVAL_P(arg_property), "uiVal")) {
Z_LVAL(type) = VT_UI2;
- }
- else if(!strcmp(Z_STRVAL_P(arg_property), "ulVal"))
- {
+ } else if (!strcmp(Z_STRVAL_P(arg_property), "ulVal")) {
Z_LVAL(type) = VT_UI4;
- }
- else if(!strcmp(Z_STRVAL_P(arg_property), "intVal"))
- {
+ } else if (!strcmp(Z_STRVAL_P(arg_property), "intVal")) {
Z_LVAL(type) = VT_INT;
- }
- else if(!strcmp(Z_STRVAL_P(arg_property), "uintVal"))
- {
+ } else if (!strcmp(Z_STRVAL_P(arg_property), "uintVal")) {
Z_LVAL(type) = VT_UINT|VT_BYREF;
- }
- else if(!strcmp(Z_STRVAL_P(arg_property), "pcVal"))
- {
+ } else if (!strcmp(Z_STRVAL_P(arg_property), "pcVal")) {
Z_LVAL(type) = VT_I1|VT_BYREF;
- }
- else if(!strcmp(Z_STRVAL_P(arg_property), "puiVal"))
- {
+ } else if (!strcmp(Z_STRVAL_P(arg_property), "puiVal")) {
Z_LVAL(type) = VT_UI2|VT_BYREF;
- }
- else if(!strcmp(Z_STRVAL_P(arg_property), "pulVal"))
- {
+ } else if (!strcmp(Z_STRVAL_P(arg_property), "pulVal")) {
Z_LVAL(type) = VT_UI4|VT_BYREF;
- }
- else if(!strcmp(Z_STRVAL_P(arg_property), "pintVal"))
- {
+ } else if (!strcmp(Z_STRVAL_P(arg_property), "pintVal")) {
Z_LVAL(type) = VT_INT|VT_BYREF;
- }
- else if(!strcmp(Z_STRVAL_P(arg_property), "puintVal"))
- {
+ } else if (!strcmp(Z_STRVAL_P(arg_property), "puintVal")) {
Z_LVAL(type) = VT_UINT|VT_BYREF;
- }
- else
- {
+ } else {
php_error(E_WARNING, "Unknown member.");
return FAILURE;
}
@@ -424,6 +344,7 @@ static int do_VARIANT_propset(VARIANT *var_arg, pval *arg_property, pval *value
return SUCCESS;
}
+
static void php_VARIANT_destructor(zend_rsrc_list_entry *rsrc TSRMLS_DC)
{
FREE_VARIANT(rsrc->ptr);