COM_CONST(CLSCTX_SERVER);
COM_CONST(CLSCTX_ALL);
+#if 0
COM_CONST(DISPATCH_METHOD);
COM_CONST(DISPATCH_PROPERTYGET);
COM_CONST(DISPATCH_PROPERTYPUT);
+#endif
COM_CONST(VT_NULL);
COM_CONST(VT_EMPTY);
COM_CONST(VARCMP_GT);
COM_CONST(VARCMP_NULL);
+ COM_CONST(NORM_IGNORECASE);
+ COM_CONST(NORM_IGNORENONSPACE);
+ COM_CONST(NORM_IGNORESYMBOLS);
+ COM_CONST(NORM_IGNOREWIDTH);
+ COM_CONST(NORM_IGNOREKANATYPE);
+#ifdef NORM_IGNOREKASHIDA
+ COM_CONST(NORM_IGNOREKASHIDA);
+#endif
+ COM_CONST(DISP_E_DIVBYZERO);
+ COM_CONST(DISP_E_OVERFLOW);
+
return SUCCESS;
}
/* }}} */
/* }}} */
/* {{{ proto void variant_set(object variant, mixed value)
- Assigns a new value for a variant object (like "set" in VB) */
+ Assigns a new value for a variant object */
PHP_FUNCTION(variant_set)
{
zval *zobj, *zvalue = NULL;
if (SUCCEEDED(result)) {
php_com_wrap_variant(return_value, &vres, codepage TSRMLS_CC);
+ } else {
+ char *werr;
+ werr = php_win_err(result);
+ php_com_throw_exception(result, werr TSRMLS_CC);
+ LocalFree(werr);
}
VariantClear(&vres);
/* }}} */
/* {{{ proto mixed variant_sub(mixed left, mixed right)
- subjects the value of the right variant from the left variant value and returns the result */
+ subtracts the value of the right variant from the left variant value and returns the result */
PHP_FUNCTION(variant_sub)
{
variant_binary_operation(VOP_SUB, INTERNAL_FUNCTION_PARAM_PASSTHRU);
/* }}} */
/* {{{ proto mixed variant_idiv(mixed left, mixed right)
- Converts variants to operands and then returns the result from dividing them */
+ Converts variants to integers and then returns the result from dividing them */
PHP_FUNCTION(variant_idiv)
{
variant_binary_operation(VOP_IDIV, INTERNAL_FUNCTION_PARAM_PASSTHRU);
if (SUCCEEDED(result)) {
php_com_wrap_variant(return_value, &vres, codepage TSRMLS_CC);
+ } else {
+ char *werr;
+ werr = php_win_err(result);
+ php_com_throw_exception(result, werr TSRMLS_CC);
+ LocalFree(werr);
}
VariantClear(&vres);
/* }}} */
/* {{{ proto mixed variant_fix(mixed left)
- Returns the ? of a variant */
+ Returns the integer part ? of a variant */
PHP_FUNCTION(variant_fix)
{
variant_unary_operation(VOP_FIX, INTERNAL_FUNCTION_PARAM_PASSTHRU);
}
/* }}} */
-/* {{{ proto mixed variant_index_get(object variant, mixed index1 [, mixed index2 [, ...]])
- Get the value of a multi dimensional array property */
-PHP_FUNCTION(variant_index_get)
-{
- zval *zobj;
- php_com_dotnet_object *obj;
-
- if (FAILURE == zend_parse_parameters(1 TSRMLS_CC,
- "O", &zobj, php_com_variant_class_entry)) {
- return;
- }
- obj = CDNO_FETCH(zobj);
-
- /* TODO: finish... */
-}
-/* }}} */
/* return value */
if (retval) {
if (pvarRes) {
- if (Z_TYPE_P(retval) == IS_OBJECT) {
- /* export the object using a dispatch like ourselves */
- VariantInit(pvarRes);
- V_VT(pvarRes) = VT_DISPATCH;
- V_DISPATCH(pvarRes) = php_com_wrapper_export(retval TSRMLS_CC);
- } else {
- php_com_variant_from_zval(pvarRes, retval, COMG(code_page) TSRMLS_CC);
- }
+ VariantInit(pvarRes);
+ php_com_variant_from_zval(pvarRes, retval, COMG(code_page) TSRMLS_CC);
}
zval_ptr_dtor(&retval);
} else if (pvarRes) {
FETCH_DISP("DeleteMemberByName");
+ /* TODO: unset */
+
return S_FALSE;
}
FETCH_DISP("DeleteMemberByDispID");
+ /* TODO: unset */
+
return S_FALSE;
}