Skip to content

Commit 897765e

Browse files
committed
Declare ext/ffi constants in stubs
1 parent 0b6f58d commit 897765e

File tree

3 files changed

+428
-48
lines changed

3 files changed

+428
-48
lines changed

ext/ffi/ffi.c

Lines changed: 2 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
#include "zend_exceptions.h"
2626
#include "zend_closures.h"
2727
#include "main/SAPI.h"
28-
#include "ffi_arginfo.h"
2928

3029
#include <ffi.h>
3130

@@ -86,6 +85,8 @@ typedef enum _zend_ffi_type_kind {
8685
ZEND_FFI_TYPE_STRUCT,
8786
} zend_ffi_type_kind;
8887

88+
#include "ffi_arginfo.h"
89+
8990
typedef enum _zend_ffi_flags {
9091
ZEND_FFI_FLAG_CONST = (1 << 0),
9192
ZEND_FFI_FLAG_OWNED = (1 << 1),
@@ -5237,9 +5238,6 @@ static zend_result zend_ffi_preload(char *preload) /* {{{ */
52375238
}
52385239
/* }}} */
52395240

5240-
#define REGISTER_FFI_TYPE_CONSTANT(name) \
5241-
zend_declare_class_constant_long(zend_ffi_ctype_ce, #name, sizeof(#name) - 1, ZEND_FFI_ ## name)
5242-
52435241
/* {{{ ZEND_MINIT_FUNCTION */
52445242
ZEND_MINIT_FUNCTION(ffi)
52455243
{
@@ -5384,49 +5382,6 @@ ZEND_MINIT_FUNCTION(ffi)
53845382
zend_ffi_ctype_handlers.get_properties = zend_fake_get_properties;
53855383
zend_ffi_ctype_handlers.get_gc = zend_fake_get_gc;
53865384

5387-
REGISTER_FFI_TYPE_CONSTANT(TYPE_VOID);
5388-
REGISTER_FFI_TYPE_CONSTANT(TYPE_FLOAT);
5389-
REGISTER_FFI_TYPE_CONSTANT(TYPE_DOUBLE);
5390-
#ifdef HAVE_LONG_DOUBLE
5391-
REGISTER_FFI_TYPE_CONSTANT(TYPE_LONGDOUBLE);
5392-
#endif
5393-
REGISTER_FFI_TYPE_CONSTANT(TYPE_UINT8);
5394-
REGISTER_FFI_TYPE_CONSTANT(TYPE_SINT8);
5395-
REGISTER_FFI_TYPE_CONSTANT(TYPE_UINT16);
5396-
REGISTER_FFI_TYPE_CONSTANT(TYPE_SINT16);
5397-
REGISTER_FFI_TYPE_CONSTANT(TYPE_UINT32);
5398-
REGISTER_FFI_TYPE_CONSTANT(TYPE_SINT32);
5399-
REGISTER_FFI_TYPE_CONSTANT(TYPE_UINT64);
5400-
REGISTER_FFI_TYPE_CONSTANT(TYPE_SINT64);
5401-
REGISTER_FFI_TYPE_CONSTANT(TYPE_ENUM);
5402-
REGISTER_FFI_TYPE_CONSTANT(TYPE_BOOL);
5403-
REGISTER_FFI_TYPE_CONSTANT(TYPE_CHAR);
5404-
REGISTER_FFI_TYPE_CONSTANT(TYPE_POINTER);
5405-
REGISTER_FFI_TYPE_CONSTANT(TYPE_FUNC);
5406-
REGISTER_FFI_TYPE_CONSTANT(TYPE_ARRAY);
5407-
REGISTER_FFI_TYPE_CONSTANT(TYPE_STRUCT);
5408-
5409-
REGISTER_FFI_TYPE_CONSTANT(ATTR_CONST);
5410-
REGISTER_FFI_TYPE_CONSTANT(ATTR_INCOMPLETE_TAG);
5411-
REGISTER_FFI_TYPE_CONSTANT(ATTR_VARIADIC);
5412-
REGISTER_FFI_TYPE_CONSTANT(ATTR_INCOMPLETE_ARRAY);
5413-
REGISTER_FFI_TYPE_CONSTANT(ATTR_VLA);
5414-
REGISTER_FFI_TYPE_CONSTANT(ATTR_UNION);
5415-
REGISTER_FFI_TYPE_CONSTANT(ATTR_PACKED);
5416-
REGISTER_FFI_TYPE_CONSTANT(ATTR_MS_STRUCT);
5417-
REGISTER_FFI_TYPE_CONSTANT(ATTR_GCC_STRUCT);
5418-
5419-
REGISTER_FFI_TYPE_CONSTANT(ABI_DEFAULT);
5420-
REGISTER_FFI_TYPE_CONSTANT(ABI_CDECL);
5421-
REGISTER_FFI_TYPE_CONSTANT(ABI_FASTCALL);
5422-
REGISTER_FFI_TYPE_CONSTANT(ABI_THISCALL);
5423-
REGISTER_FFI_TYPE_CONSTANT(ABI_STDCALL);
5424-
REGISTER_FFI_TYPE_CONSTANT(ABI_PASCAL);
5425-
REGISTER_FFI_TYPE_CONSTANT(ABI_REGISTER);
5426-
REGISTER_FFI_TYPE_CONSTANT(ABI_MS);
5427-
REGISTER_FFI_TYPE_CONSTANT(ABI_SYSV);
5428-
REGISTER_FFI_TYPE_CONSTANT(ABI_VECTORCALL);
5429-
54305385
if (FFI_G(preload)) {
54315386
return zend_ffi_preload(FFI_G(preload));
54325387
}

ext/ffi/ffi.stub.php

Lines changed: 195 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,201 @@
77
/** @not-serializable */
88
final class FFI
99
{
10+
/**
11+
* @var int
12+
* @cname ZEND_FFI_TYPE_VOID
13+
*/
14+
public const TYPE_VOID = UNKNOWN;
15+
/**
16+
* @var int
17+
* @cname ZEND_FFI_TYPE_FLOAT
18+
*/
19+
public const TYPE_FLOAT = UNKNOWN;
20+
/**
21+
* @var int
22+
* @cname ZEND_FFI_TYPE_DOUBLE
23+
*/
24+
public const TYPE_DOUBLE = UNKNOWN;
25+
#ifdef HAVE_LONG_DOUBLE
26+
/**
27+
* @var int
28+
* @cname ZEND_FFI_TYPE_LONGDOUBLE
29+
*/
30+
public const TYPE_LONGDOUBLE = UNKNOWN;
31+
#endif
32+
/**
33+
* @var int
34+
* @cname ZEND_FFI_TYPE_UINT8
35+
*/
36+
public const TYPE_UINT8 = UNKNOWN;
37+
/**
38+
* @var int
39+
* @cname ZEND_FFI_TYPE_SINT8
40+
*/
41+
public const TYPE_SINT8 = UNKNOWN;
42+
/**
43+
* @var int
44+
* @cname ZEND_FFI_TYPE_UINT16
45+
*/
46+
public const TYPE_UINT16 = UNKNOWN;
47+
/**
48+
* @var int
49+
* @cname ZEND_FFI_TYPE_SINT16
50+
*/
51+
public const TYPE_SINT16 = UNKNOWN;
52+
/**
53+
* @var int
54+
* @cname ZEND_FFI_TYPE_UINT32
55+
*/
56+
public const TYPE_UINT32 = UNKNOWN;
57+
/**
58+
* @var int
59+
* @cname ZEND_FFI_TYPE_SINT32
60+
*/
61+
public const TYPE_SINT32 = UNKNOWN;
62+
/**
63+
* @var int
64+
* @cname ZEND_FFI_TYPE_UINT64
65+
*/
66+
public const TYPE_UINT64 = UNKNOWN;
67+
/**
68+
* @var int
69+
* @cname ZEND_FFI_TYPE_SINT64
70+
*/
71+
public const TYPE_SINT64 = UNKNOWN;
72+
/**
73+
* @var int
74+
* @cname ZEND_FFI_TYPE_ENUM
75+
*/
76+
public const TYPE_ENUM = UNKNOWN;
77+
/**
78+
* @var int
79+
* @cname ZEND_FFI_TYPE_BOOL
80+
*/
81+
public const TYPE_BOOL = UNKNOWN;
82+
/**
83+
* @var int
84+
* @cname ZEND_FFI_TYPE_CHAR
85+
*/
86+
public const TYPE_CHAR = UNKNOWN;
87+
/**
88+
* @var int
89+
* @cname ZEND_FFI_TYPE_POINTER
90+
*/
91+
public const TYPE_POINTER = UNKNOWN;
92+
/**
93+
* @var int
94+
* @cname ZEND_FFI_TYPE_FUNC
95+
*/
96+
public const TYPE_FUNC = UNKNOWN;
97+
/**
98+
* @var int
99+
* @cname ZEND_FFI_TYPE_ARRAY
100+
*/
101+
public const TYPE_ARRAY = UNKNOWN;
102+
/**
103+
* @var int
104+
* @cname ZEND_FFI_TYPE_STRUCT
105+
*/
106+
public const TYPE_STRUCT = UNKNOWN;
107+
108+
/**
109+
* @var int
110+
* @cname ZEND_FFI_ATTR_CONST
111+
*/
112+
public const ATTR_CONST = UNKNOWN;
113+
/**
114+
* @var int
115+
* @cname ZEND_FFI_ATTR_INCOMPLETE_TAG
116+
*/
117+
public const ATTR_INCOMPLETE_TAG = UNKNOWN;
118+
/**
119+
* @var int
120+
* @cname ZEND_FFI_ATTR_VARIADIC
121+
*/
122+
public const ATTR_VARIADIC = UNKNOWN;
123+
/**
124+
* @var int
125+
* @cname ZEND_FFI_ATTR_INCOMPLETE_ARRAY
126+
*/
127+
public const ATTR_INCOMPLETE_ARRAY = UNKNOWN;
128+
/**
129+
* @var int
130+
* @cname ZEND_FFI_ATTR_VLA
131+
*/
132+
public const ATTR_VLA = UNKNOWN;
133+
/**
134+
* @var int
135+
* @cname ZEND_FFI_ATTR_UNION
136+
*/
137+
public const ATTR_UNION = UNKNOWN;
138+
/**
139+
* @var int
140+
* @cname ZEND_FFI_ATTR_PACKED
141+
*/
142+
public const ATTR_PACKED = UNKNOWN;
143+
/**
144+
* @var int
145+
* @cname ZEND_FFI_ATTR_MS_STRUCT
146+
*/
147+
public const ATTR_MS_STRUCT = UNKNOWN;
148+
/**
149+
* @var int
150+
* @cname ZEND_FFI_ATTR_GCC_STRUCT
151+
*/
152+
public const ATTR_GCC_STRUCT = UNKNOWN;
153+
154+
/**
155+
* @var int
156+
* @cname ZEND_FFI_ABI_DEFAULT
157+
*/
158+
public const ABI_DEFAULT = UNKNOWN;
159+
/**
160+
* @var int
161+
* @cname ZEND_FFI_ABI_CDECL
162+
*/
163+
public const ABI_CDECL = UNKNOWN;
164+
/**
165+
* @var int
166+
* @cname ZEND_FFI_ABI_FASTCALL
167+
*/
168+
public const ABI_FASTCALL = UNKNOWN;
169+
/**
170+
* @var int
171+
* @cname ZEND_FFI_ABI_THISCALL
172+
*/
173+
public const ABI_THISCALL = UNKNOWN;
174+
/**
175+
* @var int
176+
* @cname ZEND_FFI_ABI_STDCALL
177+
*/
178+
public const ABI_STDCALL = UNKNOWN;
179+
/**
180+
* @var int
181+
* @cname ZEND_FFI_ABI_PASCAL
182+
*/
183+
public const ABI_PASCAL = UNKNOWN;
184+
/**
185+
* @var int
186+
* @cname ZEND_FFI_ABI_REGISTER
187+
*/
188+
public const ABI_REGISTER = UNKNOWN;
189+
/**
190+
* @var int
191+
* @cname ZEND_FFI_ABI_MS
192+
*/
193+
public const ABI_MS = UNKNOWN;
194+
/**
195+
* @var int
196+
* @cname ZEND_FFI_ABI_SYSV
197+
*/
198+
public const ABI_SYSV = UNKNOWN;
199+
/**
200+
* @var int
201+
* @cname ZEND_FFI_ABI_VECTORCALL
202+
*/
203+
public const ABI_VECTORCALL = UNKNOWN;
204+
10205
public static function cdef(string $code = "", ?string $lib = null): FFI {}
11206

12207
public static function load(string $filename): ?FFI {}

0 commit comments

Comments
 (0)