Skip to content

Commit d476da7

Browse files
authored
Declare ext/ffi constants in stubs (#8695)
1 parent 271b723 commit d476da7

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
@@ -75,6 +75,201 @@ final class CData {
7575

7676
/** @not-serializable */
7777
final class CType {
78+
/**
79+
* @var int
80+
* @cname ZEND_FFI_TYPE_VOID
81+
*/
82+
public const TYPE_VOID = UNKNOWN;
83+
/**
84+
* @var int
85+
* @cname ZEND_FFI_TYPE_FLOAT
86+
*/
87+
public const TYPE_FLOAT = UNKNOWN;
88+
/**
89+
* @var int
90+
* @cname ZEND_FFI_TYPE_DOUBLE
91+
*/
92+
public const TYPE_DOUBLE = UNKNOWN;
93+
#ifdef HAVE_LONG_DOUBLE
94+
/**
95+
* @var int
96+
* @cname ZEND_FFI_TYPE_LONGDOUBLE
97+
*/
98+
public const TYPE_LONGDOUBLE = UNKNOWN;
99+
#endif
100+
/**
101+
* @var int
102+
* @cname ZEND_FFI_TYPE_UINT8
103+
*/
104+
public const TYPE_UINT8 = UNKNOWN;
105+
/**
106+
* @var int
107+
* @cname ZEND_FFI_TYPE_SINT8
108+
*/
109+
public const TYPE_SINT8 = UNKNOWN;
110+
/**
111+
* @var int
112+
* @cname ZEND_FFI_TYPE_UINT16
113+
*/
114+
public const TYPE_UINT16 = UNKNOWN;
115+
/**
116+
* @var int
117+
* @cname ZEND_FFI_TYPE_SINT16
118+
*/
119+
public const TYPE_SINT16 = UNKNOWN;
120+
/**
121+
* @var int
122+
* @cname ZEND_FFI_TYPE_UINT32
123+
*/
124+
public const TYPE_UINT32 = UNKNOWN;
125+
/**
126+
* @var int
127+
* @cname ZEND_FFI_TYPE_SINT32
128+
*/
129+
public const TYPE_SINT32 = UNKNOWN;
130+
/**
131+
* @var int
132+
* @cname ZEND_FFI_TYPE_UINT64
133+
*/
134+
public const TYPE_UINT64 = UNKNOWN;
135+
/**
136+
* @var int
137+
* @cname ZEND_FFI_TYPE_SINT64
138+
*/
139+
public const TYPE_SINT64 = UNKNOWN;
140+
/**
141+
* @var int
142+
* @cname ZEND_FFI_TYPE_ENUM
143+
*/
144+
public const TYPE_ENUM = UNKNOWN;
145+
/**
146+
* @var int
147+
* @cname ZEND_FFI_TYPE_BOOL
148+
*/
149+
public const TYPE_BOOL = UNKNOWN;
150+
/**
151+
* @var int
152+
* @cname ZEND_FFI_TYPE_CHAR
153+
*/
154+
public const TYPE_CHAR = UNKNOWN;
155+
/**
156+
* @var int
157+
* @cname ZEND_FFI_TYPE_POINTER
158+
*/
159+
public const TYPE_POINTER = UNKNOWN;
160+
/**
161+
* @var int
162+
* @cname ZEND_FFI_TYPE_FUNC
163+
*/
164+
public const TYPE_FUNC = UNKNOWN;
165+
/**
166+
* @var int
167+
* @cname ZEND_FFI_TYPE_ARRAY
168+
*/
169+
public const TYPE_ARRAY = UNKNOWN;
170+
/**
171+
* @var int
172+
* @cname ZEND_FFI_TYPE_STRUCT
173+
*/
174+
public const TYPE_STRUCT = UNKNOWN;
175+
176+
/**
177+
* @var int
178+
* @cname ZEND_FFI_ATTR_CONST
179+
*/
180+
public const ATTR_CONST = UNKNOWN;
181+
/**
182+
* @var int
183+
* @cname ZEND_FFI_ATTR_INCOMPLETE_TAG
184+
*/
185+
public const ATTR_INCOMPLETE_TAG = UNKNOWN;
186+
/**
187+
* @var int
188+
* @cname ZEND_FFI_ATTR_VARIADIC
189+
*/
190+
public const ATTR_VARIADIC = UNKNOWN;
191+
/**
192+
* @var int
193+
* @cname ZEND_FFI_ATTR_INCOMPLETE_ARRAY
194+
*/
195+
public const ATTR_INCOMPLETE_ARRAY = UNKNOWN;
196+
/**
197+
* @var int
198+
* @cname ZEND_FFI_ATTR_VLA
199+
*/
200+
public const ATTR_VLA = UNKNOWN;
201+
/**
202+
* @var int
203+
* @cname ZEND_FFI_ATTR_UNION
204+
*/
205+
public const ATTR_UNION = UNKNOWN;
206+
/**
207+
* @var int
208+
* @cname ZEND_FFI_ATTR_PACKED
209+
*/
210+
public const ATTR_PACKED = UNKNOWN;
211+
/**
212+
* @var int
213+
* @cname ZEND_FFI_ATTR_MS_STRUCT
214+
*/
215+
public const ATTR_MS_STRUCT = UNKNOWN;
216+
/**
217+
* @var int
218+
* @cname ZEND_FFI_ATTR_GCC_STRUCT
219+
*/
220+
public const ATTR_GCC_STRUCT = UNKNOWN;
221+
222+
/**
223+
* @var int
224+
* @cname ZEND_FFI_ABI_DEFAULT
225+
*/
226+
public const ABI_DEFAULT = UNKNOWN;
227+
/**
228+
* @var int
229+
* @cname ZEND_FFI_ABI_CDECL
230+
*/
231+
public const ABI_CDECL = UNKNOWN;
232+
/**
233+
* @var int
234+
* @cname ZEND_FFI_ABI_FASTCALL
235+
*/
236+
public const ABI_FASTCALL = UNKNOWN;
237+
/**
238+
* @var int
239+
* @cname ZEND_FFI_ABI_THISCALL
240+
*/
241+
public const ABI_THISCALL = UNKNOWN;
242+
/**
243+
* @var int
244+
* @cname ZEND_FFI_ABI_STDCALL
245+
*/
246+
public const ABI_STDCALL = UNKNOWN;
247+
/**
248+
* @var int
249+
* @cname ZEND_FFI_ABI_PASCAL
250+
*/
251+
public const ABI_PASCAL = UNKNOWN;
252+
/**
253+
* @var int
254+
* @cname ZEND_FFI_ABI_REGISTER
255+
*/
256+
public const ABI_REGISTER = UNKNOWN;
257+
/**
258+
* @var int
259+
* @cname ZEND_FFI_ABI_MS
260+
*/
261+
public const ABI_MS = UNKNOWN;
262+
/**
263+
* @var int
264+
* @cname ZEND_FFI_ABI_SYSV
265+
*/
266+
public const ABI_SYSV = UNKNOWN;
267+
/**
268+
* @var int
269+
* @cname ZEND_FFI_ABI_VECTORCALL
270+
*/
271+
public const ABI_VECTORCALL = UNKNOWN;
272+
78273
public function getName(): string {}
79274

80275
public function getKind(): int {}

0 commit comments

Comments
 (0)