diff options
Diffstat (limited to 'ext/com_dotnet')
| -rw-r--r-- | ext/com_dotnet/com_com.c | 11 | ||||
| -rw-r--r-- | ext/com_dotnet/com_extension.c | 1 | ||||
| -rw-r--r-- | ext/com_dotnet/com_extension.stub.php | 50 | ||||
| -rw-r--r-- | ext/com_dotnet/com_extension_arginfo.h | 24 |
4 files changed, 46 insertions, 40 deletions
diff --git a/ext/com_dotnet/com_com.c b/ext/com_dotnet/com_com.c index 802717bb9c..b024f092f5 100644 --- a/ext/com_dotnet/com_com.c +++ b/ext/com_dotnet/com_com.c @@ -288,18 +288,23 @@ PHP_FUNCTION(com_get_active_object) CLSID clsid; char *module_name; size_t module_name_len; - zend_long code_page = COMG(code_page); + zend_long code_page; + zend_bool code_page_is_null = 1; IUnknown *unk = NULL; IDispatch *obj = NULL; HRESULT res; OLECHAR *module = NULL; php_com_initialize(); - if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS(), "s|l", - &module_name, &module_name_len, &code_page)) { + if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS(), "s|l!", + &module_name, &module_name_len, &code_page, &code_page_is_null)) { RETURN_THROWS(); } + if (code_page_is_null) { + code_page = COMG(code_page); + } + module = php_com_string_to_olestring(module_name, module_name_len, (int)code_page); res = CLSIDFromString(module, &clsid); diff --git a/ext/com_dotnet/com_extension.c b/ext/com_dotnet/com_extension.c index a39e792ae9..73b70f07ab 100644 --- a/ext/com_dotnet/com_extension.c +++ b/ext/com_dotnet/com_extension.c @@ -259,6 +259,7 @@ PHP_MINIT_FUNCTION(com_dotnet) COM_CONST(VARCMP_EQ); COM_CONST(VARCMP_GT); COM_CONST(VARCMP_NULL); + COM_CONST(LOCALE_SYSTEM_DEFAULT); COM_CONST(NORM_IGNORECASE); COM_CONST(NORM_IGNORENONSPACE); diff --git a/ext/com_dotnet/com_extension.stub.php b/ext/com_dotnet/com_extension.stub.php index d97a51968e..90c14df5bc 100644 --- a/ext/com_dotnet/com_extension.stub.php +++ b/ext/com_dotnet/com_extension.stub.php @@ -2,52 +2,51 @@ /** @generate-function-entries */ -function variant_set(variant $variant, $value): void {} +function variant_set(variant $variant, mixed $value): void {} -function variant_add($left, $right): variant {} +function variant_add(mixed $left, mixed $right): variant {} -function variant_cat($left, $right): variant {} +function variant_cat(mixed $left, mixed $right): variant {} -function variant_sub($left, $right): variant {} +function variant_sub(mixed $left, mixed $right): variant {} -function variant_mul($left, $right): variant {} +function variant_mul(mixed $left, mixed $right): variant {} -function variant_and($left, $right): variant {} +function variant_and(mixed $left, mixed $right): variant {} -function variant_div($left, $right): variant {} +function variant_div(mixed $left, mixed $right): variant {} -function variant_eqv($left, $right): variant {} +function variant_eqv(mixed $left, mixed $right): variant {} -function variant_idiv($left, $right): variant {} +function variant_idiv(mixed $left, mixed $right): variant {} -function variant_imp($left, $right): variant {} +function variant_imp(mixed $left, mixed $right): variant {} -function variant_mod($left, $right): variant {} +function variant_mod(mixed $left, mixed $right): variant {} -function variant_or($left, $right): variant {} +function variant_or(mixed $left, mixed $right): variant {} -function variant_pow($left, $right): variant {} +function variant_pow(mixed $left, mixed $right): variant {} -function variant_xor($left, $right): variant {} +function variant_xor(mixed $left, mixed $right): variant {} -function variant_abs($left): variant {} +function variant_abs(mixed $left): variant {} -function variant_fix($left): variant {} +function variant_fix(mixed $left): variant {} -function variant_int($left): variant {} +function variant_int(mixed $left): variant {} -function variant_neg($left): variant {} +function variant_neg(mixed $left): variant {} -function variant_not($left): variant {} +function variant_not(mixed $left): variant {} -function variant_round($left, int $decimals): ?variant {} +function variant_round(mixed $left, int $decimals): ?variant {} -function variant_cmp($left, $right, int $lcid = UNKNOWN, int $flags = 0): int {} +function variant_cmp(mixed $left, mixed $right, int $lcid = LOCALE_SYSTEM_DEFAULT, int $flags = 0): int {} function variant_date_to_timestamp(variant $variant): ?int {} -/** @return variant|false */ -function variant_date_from_timestamp(int $timestamp) {} +function variant_date_from_timestamp(int $timestamp): variant|false {} function variant_get_type(variant $variant): int {} @@ -55,10 +54,11 @@ function variant_set_type(variant $variant, int $type): void {} function variant_cast(variant $variant, int $type): variant {} -function com_get_active_object(string $progid, int $code_page = UNKNOWN): variant {} +function com_get_active_object(string $progid, ?int $code_page = null): variant {} function com_create_guid(): string|false {} +/** @param array|string|null $sinkinterface */ function com_event_sink(variant $comobject, object $sinkobject, $sinkinterface = UNKNOWN): bool {} function com_print_typeinfo($comobject, ?string $dispinterface = null, bool $wantsink = false): bool {} @@ -69,7 +69,7 @@ function com_load_typelib(string $typelib_name, bool $case_insensitive = true): class variant { - public function __construct($value = null, int $type = VT_EMPTY, int $codepage = CP_ACP) {} + public function __construct(mixed $value = null, int $type = VT_EMPTY, int $codepage = CP_ACP) {} } class com diff --git a/ext/com_dotnet/com_extension_arginfo.h b/ext/com_dotnet/com_extension_arginfo.h index 4ee6d37504..afe2f1b6ad 100644 --- a/ext/com_dotnet/com_extension_arginfo.h +++ b/ext/com_dotnet/com_extension_arginfo.h @@ -1,14 +1,14 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: 965dcbb494d51bb3fd41a2898a1c53d7478fd699 */ + * Stub hash: caec4bba1103a07a86803ac0192782fef7d6680f */ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_variant_set, 0, 2, IS_VOID, 0) ZEND_ARG_OBJ_INFO(0, variant, variant, 0) - ZEND_ARG_INFO(0, value) + ZEND_ARG_TYPE_INFO(0, value, IS_MIXED, 0) ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_variant_add, 0, 2, variant, 0) - ZEND_ARG_INFO(0, left) - ZEND_ARG_INFO(0, right) + ZEND_ARG_TYPE_INFO(0, left, IS_MIXED, 0) + ZEND_ARG_TYPE_INFO(0, right, IS_MIXED, 0) ZEND_END_ARG_INFO() #define arginfo_variant_cat arginfo_variant_add @@ -36,7 +36,7 @@ ZEND_END_ARG_INFO() #define arginfo_variant_xor arginfo_variant_add ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_variant_abs, 0, 1, variant, 0) - ZEND_ARG_INFO(0, left) + ZEND_ARG_TYPE_INFO(0, left, IS_MIXED, 0) ZEND_END_ARG_INFO() #define arginfo_variant_fix arginfo_variant_abs @@ -48,14 +48,14 @@ ZEND_END_ARG_INFO() #define arginfo_variant_not arginfo_variant_abs ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_variant_round, 0, 2, variant, 1) - ZEND_ARG_INFO(0, left) + ZEND_ARG_TYPE_INFO(0, left, IS_MIXED, 0) ZEND_ARG_TYPE_INFO(0, decimals, IS_LONG, 0) ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_variant_cmp, 0, 2, IS_LONG, 0) - ZEND_ARG_INFO(0, left) - ZEND_ARG_INFO(0, right) - ZEND_ARG_TYPE_INFO(0, lcid, IS_LONG, 0) + ZEND_ARG_TYPE_INFO(0, left, IS_MIXED, 0) + ZEND_ARG_TYPE_INFO(0, right, IS_MIXED, 0) + ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, lcid, IS_LONG, 0, "LOCALE_SYSTEM_DEFAULT") ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, flags, IS_LONG, 0, "0") ZEND_END_ARG_INFO() @@ -63,7 +63,7 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_variant_date_to_timestamp, 0, 1, ZEND_ARG_OBJ_INFO(0, variant, variant, 0) ZEND_END_ARG_INFO() -ZEND_BEGIN_ARG_INFO_EX(arginfo_variant_date_from_timestamp, 0, 0, 1) +ZEND_BEGIN_ARG_WITH_RETURN_OBJ_TYPE_MASK_EX(arginfo_variant_date_from_timestamp, 0, 1, variant, MAY_BE_FALSE) ZEND_ARG_TYPE_INFO(0, timestamp, IS_LONG, 0) ZEND_END_ARG_INFO() @@ -83,7 +83,7 @@ ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_com_get_active_object, 0, 1, variant, 0) ZEND_ARG_TYPE_INFO(0, progid, IS_STRING, 0) - ZEND_ARG_TYPE_INFO(0, code_page, IS_LONG, 0) + ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, code_page, IS_LONG, 1, "null") ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_com_create_guid, 0, 0, MAY_BE_STRING|MAY_BE_FALSE) @@ -111,7 +111,7 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_com_load_typelib, 0, 1, _IS_BOOL ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(arginfo_class_variant___construct, 0, 0, 0) - ZEND_ARG_INFO_WITH_DEFAULT_VALUE(0, value, "null") + ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, value, IS_MIXED, 0, "null") ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, type, IS_LONG, 0, "VT_EMPTY") ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, codepage, IS_LONG, 0, "CP_ACP") ZEND_END_ARG_INFO() |
