cvs: /php4/ext/com COM.c

From: Date: Fri, 03 Dec 1999 02:25:52 +0000
Subject: cvs: /php4/ext/com COM.c
Groups: php.version4 
Request: Send a blank email to php-version4+get-7299@lists.php.net to get a copy of this message
rubys Thu Dec 2 21:25:52 1999 EDT Modified files: /php4/ext/com COM.c Log: Support DATE_to_pval and DISPATCH_to_pval Index: php4/ext/com/COM.c diff -u php4/ext/com/COM.c:1.15 php4/ext/com/COM.c:1.16 --- php4/ext/com/COM.c:1.15 Fri Nov 26 11:51:52 1999 +++ php4/ext/com/COM.c Thu Dec 2 21:25:21 1999 @@ -49,6 +49,8 @@ static int le_idispatch; +static zend_class_entry com_class_entry; + function_entry COM_functions[] = { PHP_FE(COM_load, NULL) PHP_FE(COM_invoke, NULL) @@ -384,12 +386,47 @@ } pval_arg->type = IS_STRING; break; - case VT_UNKNOWN: + case VT_DATE: + { + SYSTEMTIME wintime; + struct tm phptime; + + VariantTimeToSystemTime(var_arg->date, &wintime); + phptime.tm_year = wintime.wYear-1900; + phptime.tm_mon = wintime.wMonth-1; + phptime.tm_mday = wintime.wDay; + phptime.tm_hour = wintime.wHour; + phptime.tm_min = wintime.wMinute; + phptime.tm_sec = wintime.wSecond; + phptime.tm_isdst= -1; + + tzset(); + pval_arg->value.lval = mktime(&phptime); + pval_arg->type = IS_LONG; + break; + } case VT_DISPATCH: - /* possibly, return IDispatch as a new COM object. right now - just get rid of it */ - var_arg->pdispVal->lpVtbl->Release(var_arg->pdispVal); - var_reset(pval_arg); + { + pval *handle; + + pval_arg->type=IS_OBJECT; + pval_arg->value.obj.ce=&com_class_entry; + pval_arg->value.obj.properties = (HashTable *) emalloc(sizeof(HashTable)); + pval_arg->is_ref=1; + pval_arg->refcount=1; + zend_hash_init(pval_arg->value.obj.properties, 0, NULL, PVAL_PTR_DTOR, 0); + + handle = (pval *) emalloc(sizeof(pval)); + handle->type = IS_LONG; + handle->value.lval = php3_list_insert(var_arg->pdispVal, le_idispatch); + pval_copy_constructor(handle); + INIT_PZVAL(handle); + zend_hash_index_update(pval_arg->value.obj.properties, 0, &handle, sizeof(pval *), NULL); break; + } + case VT_UNKNOWN: + var_arg->pdispVal->lpVtbl->Release(var_arg->pdispVal); + /* fallthru */ default: php_error(E_WARNING,"Unsupported variant type"); var_reset(pval_arg); @@ -842,7 +879,7 @@ /* switch (overloaded_property->element.type) { case IS_LONG: - printf("%d (numeric)\n", overloaded_property->element.value.lval); + printf("%d (numeric)\n", overloaded_property->element.valuepval_arglval); break; case IS_STRING: printf("'%s'\n", overloaded_property->element.value.str.val); @@ -923,8 +960,6 @@ void php_register_COM_class() { - zend_class_entry com_class_entry; - INIT_OVERLOADED_CLASS_ENTRY(com_class_entry, "COM", NULL, php_COM_call_function_handler, php_COM_get_property_handler,

« previous php.version4 (#7299) next »