]> granicus.if.org Git - php/commitdiff
pass another com object as parameter
authorHarald Radi <phanto@php.net>
Tue, 30 Jan 2001 02:09:39 +0000 (02:09 +0000)
committerHarald Radi <phanto@php.net>
Tue, 30 Jan 2001 02:09:39 +0000 (02:09 +0000)
ext/com/VARIANT.c
ext/com/conversion.c
ext/rpc/com/conversion.c
ext/rpc/com/variant.c

index 36cc82c0e43afb8551d3d9fc0f0a4b0563665e76..a133f2f588dfadf1b36b90ee5b48a49e696d7d8b 100644 (file)
@@ -145,7 +145,7 @@ pval php_VARIANT_get_property_handler(zend_property_reference *property_referenc
                                break;
 
                        case OE_IS_OBJECT:
-                               if(strstr(overloaded_property->element.value.str.val, "value"))
+                               if(!strcmp(overloaded_property->element.value.str.val, "value"))
                                        php_variant_to_pval(var_arg, &result, 0);
                                else
                                {
@@ -192,197 +192,197 @@ static int do_VARIANT_propset(VARIANT *var_arg, pval *arg_property, pval *value)
 
        type.type = IS_STRING;
        
-       if(strstr(arg_property->value.str.val, "bVal"))
+       if(!strcmp(arg_property->value.str.val, "bVal"))
        {
                type.value.str.val = "VT_UI1";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "iVal"))
+       else if(!strcmp(arg_property->value.str.val, "iVal"))
        {
                type.value.str.val = "VT_I2";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "lVal"))
+       else if(!strcmp(arg_property->value.str.val, "lVal"))
        {
                type.value.str.val = "VT_I4";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "fltVal"))
+       else if(!strcmp(arg_property->value.str.val, "fltVal"))
        {
                type.value.str.val = "VT_R4";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "dblVal"))
+       else if(!strcmp(arg_property->value.str.val, "dblVal"))
        {
                type.value.str.val = "VT_R8";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "boolVal"))
+       else if(!strcmp(arg_property->value.str.val, "boolVal"))
        {
                type.value.str.val = "VT_BOOL";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "scode"))
+       else if(!strcmp(arg_property->value.str.val, "scode"))
        {
                type.value.str.val = "VT_ERROR";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "cyVal"))
+       else if(!strcmp(arg_property->value.str.val, "cyVal"))
        {
                type.value.str.val = "VT_CY";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "date"))
+       else if(!strcmp(arg_property->value.str.val, "date"))
        {
                type.value.str.val = "VT_DATE";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "bstrVal"))
+       else if(!strcmp(arg_property->value.str.val, "bstrVal"))
        {
                type.value.str.val = "VT_BSTR";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "pdecVal"))
+       else if(!strcmp(arg_property->value.str.val, "pdecVal"))
        {
                type.value.str.val = "VT_DECIMAL|VT_BYREF";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "punkVal"))
+       else if(!strcmp(arg_property->value.str.val, "punkVal"))
        {
                type.value.str.val = "VT_UNKNOWN";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "pdispVal"))
+       else if(!strcmp(arg_property->value.str.val, "pdispVal"))
        {
                type.value.str.val = "VT_DISPATCH";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "parray"))
+       else if(!strcmp(arg_property->value.str.val, "parray"))
        {
                type.value.str.val = "VT_ARRAY";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "pbVal"))
+       else if(!strcmp(arg_property->value.str.val, "pbVal"))
        {
                type.value.str.val = "VT_UI1|VT_BYREF";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "piVal"))
+       else if(!strcmp(arg_property->value.str.val, "piVal"))
        {
                type.value.str.val = "VT_I2|VT_BYREF";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "plVal"))
+       else if(!strcmp(arg_property->value.str.val, "plVal"))
        {
                type.value.str.val = "VT_I4|VT_BYREF";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "pfltVal"))
+       else if(!strcmp(arg_property->value.str.val, "pfltVal"))
        {
                type.value.str.val = "VT_R4|VT_BYREF";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "pdblVal"))
+       else if(!strcmp(arg_property->value.str.val, "pdblVal"))
        {
                type.value.str.val = "VT_R8|VT_BYREF";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "pboolVal"))
+       else if(!strcmp(arg_property->value.str.val, "pboolVal"))
        {
                type.value.str.val = "VT_BOOL|VT_BYREF";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "pscode"))
+       else if(!strcmp(arg_property->value.str.val, "pscode"))
        {
                type.value.str.val = "VT_ERROR|VT_BYREF";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "pcyVal"))
+       else if(!strcmp(arg_property->value.str.val, "pcyVal"))
        {
                type.value.str.val = "VT_CY|VT_BYREF";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "pdate"))
+       else if(!strcmp(arg_property->value.str.val, "pdate"))
        {
                type.value.str.val = "VT_DATE|VT_BYREF";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "pbstrVal"))
+       else if(!strcmp(arg_property->value.str.val, "pbstrVal"))
        {
                type.value.str.val = "VT_BSTR|VT_BYREF";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "ppunkVal"))
+       else if(!strcmp(arg_property->value.str.val, "ppunkVal"))
        {
                type.value.str.val = "VT_UNKNOWN|VT_BYREF";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "ppdispVal"))
+       else if(!strcmp(arg_property->value.str.val, "ppdispVal"))
        {
                type.value.str.val = "VT_DISPATCH|VT_BYREF";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "pparray"))
+       else if(!strcmp(arg_property->value.str.val, "pparray"))
        {
                type.value.str.val = "VT_ARRAY|VT_BYREF";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "pvarVal"))
+       else if(!strcmp(arg_property->value.str.val, "pvarVal"))
        {
                type.value.str.val = "VT_VARIANT|VT_BYREF";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "byref"))
+       else if(!strcmp(arg_property->value.str.val, "byref"))
        {
                type.value.str.val = "VT_BYREF";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "cVal"))
+       else if(!strcmp(arg_property->value.str.val, "cVal"))
        {
                type.value.str.val = "VT_I1";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "uiVal"))
+       else if(!strcmp(arg_property->value.str.val, "uiVal"))
        {
                type.value.str.val = "VT_UI2";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "ulVal"))
+       else if(!strcmp(arg_property->value.str.val, "ulVal"))
        {
                type.value.str.val = "VT_UI4";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "intVal"))
+       else if(!strcmp(arg_property->value.str.val, "intVal"))
        {
                type.value.str.val = "VT_INT";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "uintVal"))
+       else if(!strcmp(arg_property->value.str.val, "uintVal"))
        {
                type.value.str.val = "VT_UINT|VT_BYREF";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "pcVal"))
+       else if(!strcmp(arg_property->value.str.val, "pcVal"))
        {
                type.value.str.val = "VT_I1|VT_BYREF";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "puiVal"))
+       else if(!strcmp(arg_property->value.str.val, "puiVal"))
        {
                type.value.str.val = "VT_UI2|VT_BYREF";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "pulVal"))
+       else if(!strcmp(arg_property->value.str.val, "pulVal"))
        {
                type.value.str.val = "VT_UI4|VT_BYREF";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "pintVal"))
+       else if(!strcmp(arg_property->value.str.val, "pintVal"))
        {
                type.value.str.val = "VT_INT|VT_BYREF";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "puintVal"))
+       else if(!strcmp(arg_property->value.str.val, "puintVal"))
        {
                type.value.str.val = "VT_UINT|VT_BYREF";
                php_pval_to_variant_ex(value, var_arg, &type);
index a0ef18cea52cc46a87151c15da5cade2c8126d39..1a03e55b239a13e05501da47b2815729fa8f9084 100644 (file)
@@ -35,7 +35,7 @@ PHPAPI void php_pval_to_variant(pval *pval_arg, VARIANT *var_arg)
                        break;
                        
                case IS_OBJECT:
-                       if(strstr(pval_arg->value.obj.ce->name, "VARIANT"))
+                       if(!strcmp(pval_arg->value.obj.ce->name, "VARIANT"))
                        {
                                int type;
                                pval **var_handle;
@@ -45,6 +45,23 @@ PHPAPI void php_pval_to_variant(pval *pval_arg, VARIANT *var_arg)
                                var_arg->pvarVal = (VARIANT FAR*) zend_list_find((*var_handle)->value.lval, &type);
                                var_arg->vt = VT_VARIANT|VT_BYREF;
                        }
+                       else if(!strcmp(pval_arg->value.obj.ce->name, "COM"))
+                       {
+                               pval **idispatch_handle;
+                               IDispatch *i_dispatch;
+                               int type;
+
+                               /* fetch the IDispatch interface */
+                               zend_hash_index_find(pval_arg->value.obj.properties, 0, (void **) &idispatch_handle);
+                               i_dispatch = (IDispatch *)zend_list_find((*idispatch_handle)->value.lval, &type);
+                               if (!i_dispatch || (type != php_COM_get_le_idispatch()))
+                                       var_arg->vt = VT_EMPTY;
+                               else
+                               {
+                                       var_arg->vt = VT_DISPATCH;
+                                       var_arg->pdispVal = i_dispatch;
+                               }
+                       }
                        break;
                
                case IS_RESOURCE:
@@ -84,49 +101,49 @@ PHPAPI void php_pval_to_variant_ex(pval *pval_arg, VARIANT *var_arg, pval *pval_
                OLECHAR *unicode_str;
 
                // set type
-               if(strstr(pval_type->value.str.val, "VT_UI1"))
+               if(!strcmp(pval_type->value.str.val, "VT_UI1"))
                        var_arg->vt = VT_UI1;
-               else if(strstr(pval_type->value.str.val, "VT_I2"))
+               else if(!strcmp(pval_type->value.str.val, "VT_I2"))
                        var_arg->vt = VT_I4;
-               else if(strstr(pval_type->value.str.val, "VT_R4"))
+               else if(!strcmp(pval_type->value.str.val, "VT_R4"))
                        var_arg->vt = VT_R4;
-               else if(strstr(pval_type->value.str.val, "VT_R8"))
+               else if(!strcmp(pval_type->value.str.val, "VT_R8"))
                        var_arg->vt = VT_R8;
-               else if(strstr(pval_type->value.str.val, "VT_BOOL"))
+               else if(!strcmp(pval_type->value.str.val, "VT_BOOL"))
                        var_arg->vt = VT_BOOL;
-               else if(strstr(pval_type->value.str.val, "VT_ERROR"))
+               else if(!strcmp(pval_type->value.str.val, "VT_ERROR"))
                        var_arg->vt = VT_ERROR;
-               else if(strstr(pval_type->value.str.val, "VT_CY"))
+               else if(!strcmp(pval_type->value.str.val, "VT_CY"))
                        var_arg->vt = VT_CY;
-               else if(strstr(pval_type->value.str.val, "VT_DATE"))
+               else if(!strcmp(pval_type->value.str.val, "VT_DATE"))
                        var_arg->vt = VT_DATE;
-               else if(strstr(pval_type->value.str.val, "VT_BSTR"))
+               else if(!strcmp(pval_type->value.str.val, "VT_BSTR"))
                        var_arg->vt = VT_BSTR;
-               else if(strstr(pval_type->value.str.val, "VT_DECIMAL"))
+               else if(!strcmp(pval_type->value.str.val, "VT_DECIMAL"))
                        var_arg->vt = VT_DECIMAL;
-               else if(strstr(pval_type->value.str.val, "VT_UNKNOWN"))
+               else if(!strcmp(pval_type->value.str.val, "VT_UNKNOWN"))
                        var_arg->vt = VT_UNKNOWN;
-               else if(strstr(pval_type->value.str.val, "VT_DISPATCH"))
+               else if(!strcmp(pval_type->value.str.val, "VT_DISPATCH"))
                        var_arg->vt = VT_DISPATCH;
-               else if(strstr(pval_type->value.str.val, "VT_VARIANT"))
+               else if(!strcmp(pval_type->value.str.val, "VT_VARIANT"))
                        var_arg->vt = VT_VARIANT;
-               else if(strstr(pval_type->value.str.val, "VT_I1"))
+               else if(!strcmp(pval_type->value.str.val, "VT_I1"))
                        var_arg->vt = VT_I1;
-               else if(strstr(pval_type->value.str.val, "VT_UI2"))
+               else if(!strcmp(pval_type->value.str.val, "VT_UI2"))
                        var_arg->vt = VT_UI2;
-               else if(strstr(pval_type->value.str.val, "VT_UI4"))
+               else if(!strcmp(pval_type->value.str.val, "VT_UI4"))
                        var_arg->vt = VT_UI4;
-               else if(strstr(pval_type->value.str.val, "VT_INT"))
+               else if(!strcmp(pval_type->value.str.val, "VT_INT"))
                        var_arg->vt = VT_INT;
-               else if(strstr(pval_type->value.str.val, "VT_UINT"))
+               else if(!strcmp(pval_type->value.str.val, "VT_UINT"))
                        var_arg->vt = VT_UINT;
 
                // is safearray
-               if(strstr(pval_type->value.str.val, "VT_ARRAY"))
+               if(!strcmp(pval_type->value.str.val, "VT_ARRAY"))
                        var_arg->vt |= VT_ARRAY;
 
                // by reference
-               if(strstr(pval_type->value.str.val, "VT_BYREF"))
+               if(!strcmp(pval_type->value.str.val, "VT_BYREF"))
                        var_arg->vt |= VT_BYREF;
 
                switch(var_arg->vt)
index a0ef18cea52cc46a87151c15da5cade2c8126d39..1a03e55b239a13e05501da47b2815729fa8f9084 100644 (file)
@@ -35,7 +35,7 @@ PHPAPI void php_pval_to_variant(pval *pval_arg, VARIANT *var_arg)
                        break;
                        
                case IS_OBJECT:
-                       if(strstr(pval_arg->value.obj.ce->name, "VARIANT"))
+                       if(!strcmp(pval_arg->value.obj.ce->name, "VARIANT"))
                        {
                                int type;
                                pval **var_handle;
@@ -45,6 +45,23 @@ PHPAPI void php_pval_to_variant(pval *pval_arg, VARIANT *var_arg)
                                var_arg->pvarVal = (VARIANT FAR*) zend_list_find((*var_handle)->value.lval, &type);
                                var_arg->vt = VT_VARIANT|VT_BYREF;
                        }
+                       else if(!strcmp(pval_arg->value.obj.ce->name, "COM"))
+                       {
+                               pval **idispatch_handle;
+                               IDispatch *i_dispatch;
+                               int type;
+
+                               /* fetch the IDispatch interface */
+                               zend_hash_index_find(pval_arg->value.obj.properties, 0, (void **) &idispatch_handle);
+                               i_dispatch = (IDispatch *)zend_list_find((*idispatch_handle)->value.lval, &type);
+                               if (!i_dispatch || (type != php_COM_get_le_idispatch()))
+                                       var_arg->vt = VT_EMPTY;
+                               else
+                               {
+                                       var_arg->vt = VT_DISPATCH;
+                                       var_arg->pdispVal = i_dispatch;
+                               }
+                       }
                        break;
                
                case IS_RESOURCE:
@@ -84,49 +101,49 @@ PHPAPI void php_pval_to_variant_ex(pval *pval_arg, VARIANT *var_arg, pval *pval_
                OLECHAR *unicode_str;
 
                // set type
-               if(strstr(pval_type->value.str.val, "VT_UI1"))
+               if(!strcmp(pval_type->value.str.val, "VT_UI1"))
                        var_arg->vt = VT_UI1;
-               else if(strstr(pval_type->value.str.val, "VT_I2"))
+               else if(!strcmp(pval_type->value.str.val, "VT_I2"))
                        var_arg->vt = VT_I4;
-               else if(strstr(pval_type->value.str.val, "VT_R4"))
+               else if(!strcmp(pval_type->value.str.val, "VT_R4"))
                        var_arg->vt = VT_R4;
-               else if(strstr(pval_type->value.str.val, "VT_R8"))
+               else if(!strcmp(pval_type->value.str.val, "VT_R8"))
                        var_arg->vt = VT_R8;
-               else if(strstr(pval_type->value.str.val, "VT_BOOL"))
+               else if(!strcmp(pval_type->value.str.val, "VT_BOOL"))
                        var_arg->vt = VT_BOOL;
-               else if(strstr(pval_type->value.str.val, "VT_ERROR"))
+               else if(!strcmp(pval_type->value.str.val, "VT_ERROR"))
                        var_arg->vt = VT_ERROR;
-               else if(strstr(pval_type->value.str.val, "VT_CY"))
+               else if(!strcmp(pval_type->value.str.val, "VT_CY"))
                        var_arg->vt = VT_CY;
-               else if(strstr(pval_type->value.str.val, "VT_DATE"))
+               else if(!strcmp(pval_type->value.str.val, "VT_DATE"))
                        var_arg->vt = VT_DATE;
-               else if(strstr(pval_type->value.str.val, "VT_BSTR"))
+               else if(!strcmp(pval_type->value.str.val, "VT_BSTR"))
                        var_arg->vt = VT_BSTR;
-               else if(strstr(pval_type->value.str.val, "VT_DECIMAL"))
+               else if(!strcmp(pval_type->value.str.val, "VT_DECIMAL"))
                        var_arg->vt = VT_DECIMAL;
-               else if(strstr(pval_type->value.str.val, "VT_UNKNOWN"))
+               else if(!strcmp(pval_type->value.str.val, "VT_UNKNOWN"))
                        var_arg->vt = VT_UNKNOWN;
-               else if(strstr(pval_type->value.str.val, "VT_DISPATCH"))
+               else if(!strcmp(pval_type->value.str.val, "VT_DISPATCH"))
                        var_arg->vt = VT_DISPATCH;
-               else if(strstr(pval_type->value.str.val, "VT_VARIANT"))
+               else if(!strcmp(pval_type->value.str.val, "VT_VARIANT"))
                        var_arg->vt = VT_VARIANT;
-               else if(strstr(pval_type->value.str.val, "VT_I1"))
+               else if(!strcmp(pval_type->value.str.val, "VT_I1"))
                        var_arg->vt = VT_I1;
-               else if(strstr(pval_type->value.str.val, "VT_UI2"))
+               else if(!strcmp(pval_type->value.str.val, "VT_UI2"))
                        var_arg->vt = VT_UI2;
-               else if(strstr(pval_type->value.str.val, "VT_UI4"))
+               else if(!strcmp(pval_type->value.str.val, "VT_UI4"))
                        var_arg->vt = VT_UI4;
-               else if(strstr(pval_type->value.str.val, "VT_INT"))
+               else if(!strcmp(pval_type->value.str.val, "VT_INT"))
                        var_arg->vt = VT_INT;
-               else if(strstr(pval_type->value.str.val, "VT_UINT"))
+               else if(!strcmp(pval_type->value.str.val, "VT_UINT"))
                        var_arg->vt = VT_UINT;
 
                // is safearray
-               if(strstr(pval_type->value.str.val, "VT_ARRAY"))
+               if(!strcmp(pval_type->value.str.val, "VT_ARRAY"))
                        var_arg->vt |= VT_ARRAY;
 
                // by reference
-               if(strstr(pval_type->value.str.val, "VT_BYREF"))
+               if(!strcmp(pval_type->value.str.val, "VT_BYREF"))
                        var_arg->vt |= VT_BYREF;
 
                switch(var_arg->vt)
index 36cc82c0e43afb8551d3d9fc0f0a4b0563665e76..a133f2f588dfadf1b36b90ee5b48a49e696d7d8b 100644 (file)
@@ -145,7 +145,7 @@ pval php_VARIANT_get_property_handler(zend_property_reference *property_referenc
                                break;
 
                        case OE_IS_OBJECT:
-                               if(strstr(overloaded_property->element.value.str.val, "value"))
+                               if(!strcmp(overloaded_property->element.value.str.val, "value"))
                                        php_variant_to_pval(var_arg, &result, 0);
                                else
                                {
@@ -192,197 +192,197 @@ static int do_VARIANT_propset(VARIANT *var_arg, pval *arg_property, pval *value)
 
        type.type = IS_STRING;
        
-       if(strstr(arg_property->value.str.val, "bVal"))
+       if(!strcmp(arg_property->value.str.val, "bVal"))
        {
                type.value.str.val = "VT_UI1";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "iVal"))
+       else if(!strcmp(arg_property->value.str.val, "iVal"))
        {
                type.value.str.val = "VT_I2";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "lVal"))
+       else if(!strcmp(arg_property->value.str.val, "lVal"))
        {
                type.value.str.val = "VT_I4";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "fltVal"))
+       else if(!strcmp(arg_property->value.str.val, "fltVal"))
        {
                type.value.str.val = "VT_R4";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "dblVal"))
+       else if(!strcmp(arg_property->value.str.val, "dblVal"))
        {
                type.value.str.val = "VT_R8";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "boolVal"))
+       else if(!strcmp(arg_property->value.str.val, "boolVal"))
        {
                type.value.str.val = "VT_BOOL";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "scode"))
+       else if(!strcmp(arg_property->value.str.val, "scode"))
        {
                type.value.str.val = "VT_ERROR";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "cyVal"))
+       else if(!strcmp(arg_property->value.str.val, "cyVal"))
        {
                type.value.str.val = "VT_CY";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "date"))
+       else if(!strcmp(arg_property->value.str.val, "date"))
        {
                type.value.str.val = "VT_DATE";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "bstrVal"))
+       else if(!strcmp(arg_property->value.str.val, "bstrVal"))
        {
                type.value.str.val = "VT_BSTR";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "pdecVal"))
+       else if(!strcmp(arg_property->value.str.val, "pdecVal"))
        {
                type.value.str.val = "VT_DECIMAL|VT_BYREF";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "punkVal"))
+       else if(!strcmp(arg_property->value.str.val, "punkVal"))
        {
                type.value.str.val = "VT_UNKNOWN";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "pdispVal"))
+       else if(!strcmp(arg_property->value.str.val, "pdispVal"))
        {
                type.value.str.val = "VT_DISPATCH";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "parray"))
+       else if(!strcmp(arg_property->value.str.val, "parray"))
        {
                type.value.str.val = "VT_ARRAY";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "pbVal"))
+       else if(!strcmp(arg_property->value.str.val, "pbVal"))
        {
                type.value.str.val = "VT_UI1|VT_BYREF";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "piVal"))
+       else if(!strcmp(arg_property->value.str.val, "piVal"))
        {
                type.value.str.val = "VT_I2|VT_BYREF";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "plVal"))
+       else if(!strcmp(arg_property->value.str.val, "plVal"))
        {
                type.value.str.val = "VT_I4|VT_BYREF";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "pfltVal"))
+       else if(!strcmp(arg_property->value.str.val, "pfltVal"))
        {
                type.value.str.val = "VT_R4|VT_BYREF";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "pdblVal"))
+       else if(!strcmp(arg_property->value.str.val, "pdblVal"))
        {
                type.value.str.val = "VT_R8|VT_BYREF";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "pboolVal"))
+       else if(!strcmp(arg_property->value.str.val, "pboolVal"))
        {
                type.value.str.val = "VT_BOOL|VT_BYREF";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "pscode"))
+       else if(!strcmp(arg_property->value.str.val, "pscode"))
        {
                type.value.str.val = "VT_ERROR|VT_BYREF";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "pcyVal"))
+       else if(!strcmp(arg_property->value.str.val, "pcyVal"))
        {
                type.value.str.val = "VT_CY|VT_BYREF";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "pdate"))
+       else if(!strcmp(arg_property->value.str.val, "pdate"))
        {
                type.value.str.val = "VT_DATE|VT_BYREF";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "pbstrVal"))
+       else if(!strcmp(arg_property->value.str.val, "pbstrVal"))
        {
                type.value.str.val = "VT_BSTR|VT_BYREF";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "ppunkVal"))
+       else if(!strcmp(arg_property->value.str.val, "ppunkVal"))
        {
                type.value.str.val = "VT_UNKNOWN|VT_BYREF";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "ppdispVal"))
+       else if(!strcmp(arg_property->value.str.val, "ppdispVal"))
        {
                type.value.str.val = "VT_DISPATCH|VT_BYREF";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "pparray"))
+       else if(!strcmp(arg_property->value.str.val, "pparray"))
        {
                type.value.str.val = "VT_ARRAY|VT_BYREF";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "pvarVal"))
+       else if(!strcmp(arg_property->value.str.val, "pvarVal"))
        {
                type.value.str.val = "VT_VARIANT|VT_BYREF";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "byref"))
+       else if(!strcmp(arg_property->value.str.val, "byref"))
        {
                type.value.str.val = "VT_BYREF";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "cVal"))
+       else if(!strcmp(arg_property->value.str.val, "cVal"))
        {
                type.value.str.val = "VT_I1";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "uiVal"))
+       else if(!strcmp(arg_property->value.str.val, "uiVal"))
        {
                type.value.str.val = "VT_UI2";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "ulVal"))
+       else if(!strcmp(arg_property->value.str.val, "ulVal"))
        {
                type.value.str.val = "VT_UI4";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "intVal"))
+       else if(!strcmp(arg_property->value.str.val, "intVal"))
        {
                type.value.str.val = "VT_INT";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "uintVal"))
+       else if(!strcmp(arg_property->value.str.val, "uintVal"))
        {
                type.value.str.val = "VT_UINT|VT_BYREF";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "pcVal"))
+       else if(!strcmp(arg_property->value.str.val, "pcVal"))
        {
                type.value.str.val = "VT_I1|VT_BYREF";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "puiVal"))
+       else if(!strcmp(arg_property->value.str.val, "puiVal"))
        {
                type.value.str.val = "VT_UI2|VT_BYREF";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "pulVal"))
+       else if(!strcmp(arg_property->value.str.val, "pulVal"))
        {
                type.value.str.val = "VT_UI4|VT_BYREF";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "pintVal"))
+       else if(!strcmp(arg_property->value.str.val, "pintVal"))
        {
                type.value.str.val = "VT_INT|VT_BYREF";
                php_pval_to_variant_ex(value, var_arg, &type);
        }
-       else if(strstr(arg_property->value.str.val, "puintVal"))
+       else if(!strcmp(arg_property->value.str.val, "puintVal"))
        {
                type.value.str.val = "VT_UINT|VT_BYREF";
                php_pval_to_variant_ex(value, var_arg, &type);