summaryrefslogtreecommitdiff
path: root/ext/com_dotnet
diff options
context:
space:
mode:
Diffstat (limited to 'ext/com_dotnet')
-rw-r--r--ext/com_dotnet/com_com.c11
-rw-r--r--ext/com_dotnet/com_extension.c1
-rw-r--r--ext/com_dotnet/com_extension.stub.php50
-rw-r--r--ext/com_dotnet/com_extension_arginfo.h24
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()