Skip to content

Commit 177981d

Browse files
committed
Add com_dotnet function stubs
1 parent cfbcd4c commit 177981d

File tree

3 files changed

+191
-108
lines changed

3 files changed

+191
-108
lines changed

ext/com_dotnet/com_extension.c

Lines changed: 14 additions & 108 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
#include "php_com_dotnet_internal.h"
3030
#include "Zend/zend_exceptions.h"
3131
#include "Zend/zend_interfaces.h"
32+
#include "com_extension_arginfo.h"
3233

3334
ZEND_DECLARE_MODULE_GLOBALS(com_dotnet)
3435
static PHP_GINIT_FUNCTION(com_dotnet);
@@ -38,116 +39,21 @@ zend_class_entry
3839
*php_com_exception_class_entry,
3940
*php_com_saproxy_class_entry;
4041

41-
/* {{{ arginfo */
42-
ZEND_BEGIN_ARG_INFO_EX(arginfo_variant_set, 0, 0, 2)
43-
ZEND_ARG_INFO(0, variant)
44-
ZEND_ARG_INFO(0, value)
45-
ZEND_END_ARG_INFO()
46-
47-
ZEND_BEGIN_ARG_INFO_EX(arginfo_left_right, 0, 0, 2)
48-
ZEND_ARG_INFO(0, left)
49-
ZEND_ARG_INFO(0, right)
50-
ZEND_END_ARG_INFO()
51-
52-
ZEND_BEGIN_ARG_INFO_EX(arginfo_variant_abs, 0, 0, 1)
53-
ZEND_ARG_INFO(0, left)
54-
ZEND_END_ARG_INFO()
55-
56-
ZEND_BEGIN_ARG_INFO_EX(arginfo_variant_fix, 0, 0, 1)
57-
ZEND_ARG_INFO(0, left)
58-
ZEND_END_ARG_INFO()
59-
60-
ZEND_BEGIN_ARG_INFO_EX(arginfo_variant_int, 0, 0, 1)
61-
ZEND_ARG_INFO(0, left)
62-
ZEND_END_ARG_INFO()
63-
64-
ZEND_BEGIN_ARG_INFO_EX(arginfo_variant_neg, 0, 0, 1)
65-
ZEND_ARG_INFO(0, left)
66-
ZEND_END_ARG_INFO()
67-
68-
ZEND_BEGIN_ARG_INFO_EX(arginfo_variant_not, 0, 0, 1)
69-
ZEND_ARG_INFO(0, left)
70-
ZEND_END_ARG_INFO()
71-
72-
ZEND_BEGIN_ARG_INFO_EX(arginfo_variant_round, 0, 0, 2)
73-
ZEND_ARG_INFO(0, left)
74-
ZEND_ARG_INFO(0, decimals)
75-
ZEND_END_ARG_INFO()
76-
77-
ZEND_BEGIN_ARG_INFO_EX(arginfo_variant_cmp, 0, 0, 2)
78-
ZEND_ARG_INFO(0, left)
79-
ZEND_ARG_INFO(0, right)
80-
ZEND_ARG_INFO(0, lcid)
81-
ZEND_ARG_INFO(0, flags)
82-
ZEND_END_ARG_INFO()
83-
84-
ZEND_BEGIN_ARG_INFO_EX(arginfo_variant_date_to_timestamp, 0, 0, 1)
85-
ZEND_ARG_INFO(0, variant)
86-
ZEND_END_ARG_INFO()
87-
88-
ZEND_BEGIN_ARG_INFO_EX(arginfo_variant_date_from_timestamp, 0, 0, 1)
89-
ZEND_ARG_INFO(0, timestamp)
90-
ZEND_END_ARG_INFO()
91-
92-
ZEND_BEGIN_ARG_INFO_EX(arginfo_variant_get_type, 0, 0, 1)
93-
ZEND_ARG_INFO(0, variant)
94-
ZEND_END_ARG_INFO()
95-
96-
ZEND_BEGIN_ARG_INFO_EX(arginfo_variant_set_type, 0, 0, 2)
97-
ZEND_ARG_INFO(0, variant)
98-
ZEND_ARG_INFO(0, type)
99-
ZEND_END_ARG_INFO()
100-
101-
ZEND_BEGIN_ARG_INFO_EX(arginfo_variant_cast, 0, 0, 2)
102-
ZEND_ARG_INFO(0, variant)
103-
ZEND_ARG_INFO(0, type)
104-
ZEND_END_ARG_INFO()
105-
106-
ZEND_BEGIN_ARG_INFO_EX(arginfo_com_get_active_object, 0, 0, 1)
107-
ZEND_ARG_INFO(0, progid)
108-
ZEND_ARG_INFO(0, code_page)
109-
ZEND_END_ARG_INFO()
110-
111-
ZEND_BEGIN_ARG_INFO(arginfo_com_create_guid, 0)
112-
ZEND_END_ARG_INFO()
113-
114-
ZEND_BEGIN_ARG_INFO_EX(arginfo_com_event_sink, 0, 0, 2)
115-
ZEND_ARG_INFO(0, comobject)
116-
ZEND_ARG_INFO(0, sinkobject)
117-
ZEND_ARG_INFO(0, sinkinterface)
118-
ZEND_END_ARG_INFO()
119-
120-
ZEND_BEGIN_ARG_INFO_EX(arginfo_com_print_typeinfo, 0, 0, 1)
121-
ZEND_ARG_INFO(0, comobject)
122-
ZEND_ARG_INFO(0, dispinterface)
123-
ZEND_ARG_INFO(0, wantsink)
124-
ZEND_END_ARG_INFO()
125-
126-
ZEND_BEGIN_ARG_INFO_EX(arginfo_com_message_pump, 0, 0, 0)
127-
ZEND_ARG_INFO(0, timeoutms)
128-
ZEND_END_ARG_INFO()
129-
130-
ZEND_BEGIN_ARG_INFO_EX(arginfo_com_load_typelib, 0, 0, 1)
131-
ZEND_ARG_INFO(0, typelib_name)
132-
ZEND_ARG_INFO(0, case_insensitive)
133-
ZEND_END_ARG_INFO()
134-
/* }}} */
135-
13642
static const zend_function_entry com_dotnet_functions[] = {
13743
PHP_FE(variant_set, arginfo_variant_set)
138-
PHP_FE(variant_add, arginfo_left_right)
139-
PHP_FE(variant_cat, arginfo_left_right)
140-
PHP_FE(variant_sub, arginfo_left_right)
141-
PHP_FE(variant_mul, arginfo_left_right)
142-
PHP_FE(variant_and, arginfo_left_right)
143-
PHP_FE(variant_div, arginfo_left_right)
144-
PHP_FE(variant_eqv, arginfo_left_right)
145-
PHP_FE(variant_idiv, arginfo_left_right)
146-
PHP_FE(variant_imp, arginfo_left_right)
147-
PHP_FE(variant_mod, arginfo_left_right)
148-
PHP_FE(variant_or, arginfo_left_right)
149-
PHP_FE(variant_pow, arginfo_left_right)
150-
PHP_FE(variant_xor, arginfo_left_right)
44+
PHP_FE(variant_add, arginfo_variant_add)
45+
PHP_FE(variant_cat, arginfo_variant_add)
46+
PHP_FE(variant_sub, arginfo_variant_add)
47+
PHP_FE(variant_mul, arginfo_variant_add)
48+
PHP_FE(variant_and, arginfo_variant_add)
49+
PHP_FE(variant_div, arginfo_variant_add)
50+
PHP_FE(variant_eqv, arginfo_variant_add)
51+
PHP_FE(variant_idiv, arginfo_variant_add)
52+
PHP_FE(variant_imp, arginfo_variant_add)
53+
PHP_FE(variant_mod, arginfo_variant_add)
54+
PHP_FE(variant_or, arginfo_variant_add)
55+
PHP_FE(variant_pow, arginfo_variant_add)
56+
PHP_FE(variant_xor, arginfo_variant_add)
15157
PHP_FE(variant_abs, arginfo_variant_abs)
15258
PHP_FE(variant_fix, arginfo_variant_fix)
15359
PHP_FE(variant_int, arginfo_variant_int)

ext/com_dotnet/com_extension.stub.php

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
<?php
2+
3+
function variant_set(variant $variant, $value): void {}
4+
5+
function variant_add($left, $right): variant {}
6+
7+
function variant_cat($left, $right): variant {}
8+
9+
function variant_sub($left, $right): variant {}
10+
11+
function variant_mul($left, $right): variant {}
12+
13+
function variant_and($left, $right): variant {}
14+
15+
function variant_div($left, $right): variant {}
16+
17+
function variant_eqv($left, $right): variant {}
18+
19+
function variant_idiv($left, $right): variant {}
20+
21+
function variant_imp($left, $right): variant {}
22+
23+
function variant_mod($left, $right): variant {}
24+
25+
function variant_or($left, $right): variant {}
26+
27+
function variant_pow($left, $right): variant {}
28+
29+
function variant_xor($left, $right): variant {}
30+
31+
function variant_abs($left): variant {}
32+
33+
function variant_fix($left): variant {}
34+
35+
function variant_int($left): variant {}
36+
37+
function variant_neg($left): variant {}
38+
39+
function variant_not($left): variant {}
40+
41+
function variant_round($left, int $decimals): ?variant {}
42+
43+
function variant_cmp($left, $right, int $lcid = UNKNOWN, int $flags = 0) {}
44+
45+
function variant_date_to_timestamp(variant $variant): ?int {}
46+
47+
/** @return variant|false */
48+
function variant_date_from_timestamp(int $timestamp) {}
49+
50+
function variant_get_type(variant $variant): int {}
51+
52+
function variant_set_type(variant $variant, int $type): void {}
53+
54+
function variant_cast(variant $variant, int $type): variant {}
55+
56+
function com_get_active_object(string $progid, int $code_page = UNKNOWN): variant {}
57+
58+
/** @return string|false */
59+
function com_create_guid() {}
60+
61+
function com_event_sink(variant $comobject, object $sinkobject, $sinkinterface = UNKNOWN): bool {}
62+
63+
function com_print_typeinfo($comobject, ?string $dispinterface = null, bool $wantsink = false): bool {}
64+
65+
function com_message_pump(int $timeoutms = 0): bool {}
66+
67+
function com_load_typelib(string $typelib_name, bool $case_insensitive = true) {}
Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
/* This is a generated file, edit the .stub.php file instead. */
2+
3+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_variant_set, 0, 2, IS_VOID, 0)
4+
ZEND_ARG_OBJ_INFO(0, variant, variant, 0)
5+
ZEND_ARG_INFO(0, value)
6+
ZEND_END_ARG_INFO()
7+
8+
ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_variant_add, 0, 2, variant, 0)
9+
ZEND_ARG_INFO(0, left)
10+
ZEND_ARG_INFO(0, right)
11+
ZEND_END_ARG_INFO()
12+
13+
#define arginfo_variant_cat arginfo_variant_add
14+
15+
#define arginfo_variant_sub arginfo_variant_add
16+
17+
#define arginfo_variant_mul arginfo_variant_add
18+
19+
#define arginfo_variant_and arginfo_variant_add
20+
21+
#define arginfo_variant_div arginfo_variant_add
22+
23+
#define arginfo_variant_eqv arginfo_variant_add
24+
25+
#define arginfo_variant_idiv arginfo_variant_add
26+
27+
#define arginfo_variant_imp arginfo_variant_add
28+
29+
#define arginfo_variant_mod arginfo_variant_add
30+
31+
#define arginfo_variant_or arginfo_variant_add
32+
33+
#define arginfo_variant_pow arginfo_variant_add
34+
35+
#define arginfo_variant_xor arginfo_variant_add
36+
37+
ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_variant_abs, 0, 1, variant, 0)
38+
ZEND_ARG_INFO(0, left)
39+
ZEND_END_ARG_INFO()
40+
41+
#define arginfo_variant_fix arginfo_variant_abs
42+
43+
#define arginfo_variant_int arginfo_variant_abs
44+
45+
#define arginfo_variant_neg arginfo_variant_abs
46+
47+
#define arginfo_variant_not arginfo_variant_abs
48+
49+
ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_variant_round, 0, 2, variant, 1)
50+
ZEND_ARG_INFO(0, left)
51+
ZEND_ARG_TYPE_INFO(0, decimals, IS_LONG, 0)
52+
ZEND_END_ARG_INFO()
53+
54+
ZEND_BEGIN_ARG_INFO_EX(arginfo_variant_cmp, 0, 0, 2)
55+
ZEND_ARG_INFO(0, left)
56+
ZEND_ARG_INFO(0, right)
57+
ZEND_ARG_TYPE_INFO(0, lcid, IS_LONG, 0)
58+
ZEND_ARG_TYPE_INFO(0, flags, IS_LONG, 0)
59+
ZEND_END_ARG_INFO()
60+
61+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_variant_date_to_timestamp, 0, 1, IS_LONG, 1)
62+
ZEND_ARG_OBJ_INFO(0, variant, variant, 0)
63+
ZEND_END_ARG_INFO()
64+
65+
ZEND_BEGIN_ARG_INFO_EX(arginfo_variant_date_from_timestamp, 0, 0, 1)
66+
ZEND_ARG_TYPE_INFO(0, timestamp, IS_LONG, 0)
67+
ZEND_END_ARG_INFO()
68+
69+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_variant_get_type, 0, 1, IS_LONG, 0)
70+
ZEND_ARG_OBJ_INFO(0, variant, variant, 0)
71+
ZEND_END_ARG_INFO()
72+
73+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_variant_set_type, 0, 2, IS_VOID, 0)
74+
ZEND_ARG_OBJ_INFO(0, variant, variant, 0)
75+
ZEND_ARG_TYPE_INFO(0, type, IS_LONG, 0)
76+
ZEND_END_ARG_INFO()
77+
78+
ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_variant_cast, 0, 2, variant, 0)
79+
ZEND_ARG_OBJ_INFO(0, variant, variant, 0)
80+
ZEND_ARG_TYPE_INFO(0, type, IS_LONG, 0)
81+
ZEND_END_ARG_INFO()
82+
83+
ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_com_get_active_object, 0, 1, variant, 0)
84+
ZEND_ARG_TYPE_INFO(0, progid, IS_STRING, 0)
85+
ZEND_ARG_TYPE_INFO(0, code_page, IS_LONG, 0)
86+
ZEND_END_ARG_INFO()
87+
88+
ZEND_BEGIN_ARG_INFO_EX(arginfo_com_create_guid, 0, 0, 0)
89+
ZEND_END_ARG_INFO()
90+
91+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_com_event_sink, 0, 2, _IS_BOOL, 0)
92+
ZEND_ARG_OBJ_INFO(0, comobject, variant, 0)
93+
ZEND_ARG_TYPE_INFO(0, sinkobject, IS_OBJECT, 0)
94+
ZEND_ARG_INFO(0, sinkinterface)
95+
ZEND_END_ARG_INFO()
96+
97+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_com_print_typeinfo, 0, 1, _IS_BOOL, 0)
98+
ZEND_ARG_INFO(0, comobject)
99+
ZEND_ARG_TYPE_INFO(0, dispinterface, IS_STRING, 1)
100+
ZEND_ARG_TYPE_INFO(0, wantsink, _IS_BOOL, 0)
101+
ZEND_END_ARG_INFO()
102+
103+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_com_message_pump, 0, 0, _IS_BOOL, 0)
104+
ZEND_ARG_TYPE_INFO(0, timeoutms, IS_LONG, 0)
105+
ZEND_END_ARG_INFO()
106+
107+
ZEND_BEGIN_ARG_INFO_EX(arginfo_com_load_typelib, 0, 0, 1)
108+
ZEND_ARG_TYPE_INFO(0, typelib_name, IS_STRING, 0)
109+
ZEND_ARG_TYPE_INFO(0, case_insensitive, _IS_BOOL, 0)
110+
ZEND_END_ARG_INFO()

0 commit comments

Comments
 (0)