xref: /php-src/ext/ffi/ffi.stub.php (revision f093015a)
1<?php
2
3/** @generate-class-entries */
4
5namespace {
6	/** @not-serializable */
7    final class FFI
8    {
9        /** @cvalue __BIGGEST_ALIGNMENT__ */
10        public const int __BIGGEST_ALIGNMENT__ = UNKNOWN;
11
12        public static function cdef(string $code = "", ?string $lib = null): FFI {}
13
14        public static function load(string $filename): ?FFI {}
15
16        public static function scope(string $name): FFI {}
17
18        public static function new(FFI\CType|string $type, bool $owned = true, bool $persistent = false): ?FFI\CData {}
19
20        /** @prefer-ref $ptr */
21        public static function free(FFI\CData $ptr): void {}
22
23        /**
24         * @param FFI\CData|int|float|bool|null $ptr
25         * @prefer-ref $ptr
26         */
27        public static function cast(FFI\CType|string $type, $ptr): ?FFI\CData {}
28
29        public static function type(string $type): ?FFI\CType {}
30
31        /** @prefer-ref $ptr */
32        public static function typeof(FFI\CData $ptr): FFI\CType {}
33
34        public static function arrayType(FFI\CType $type, array $dimensions): FFI\CType {}
35
36        /** @prefer-ref $ptr */
37        public static function addr(FFI\CData $ptr): FFI\CData {}
38
39        /** @prefer-ref $ptr */
40        public static function sizeof(FFI\CData|FFI\CType $ptr): int {}
41
42        /** @prefer-ref $ptr */
43        public static function alignof(FFI\CData|FFI\CType $ptr): int {}
44
45        /**
46         * @param FFI\CData|string $from
47         * @prefer-ref $to
48         * @prefer-ref $from
49         */
50        public static function memcpy(FFI\CData $to, $from, int $size): void {}
51
52        /**
53         * @prefer-ref $ptr1
54         * @param string|FFI\CData $ptr1
55         * @prefer-ref $ptr2
56         * @param string|FFI\CData $ptr2
57         */
58        public static function memcmp($ptr1, $ptr2, int $size): int {}
59
60        /** @prefer-ref $ptr */
61        public static function memset(FFI\CData $ptr, int $value, int $size): void {}
62
63        /** @prefer-ref $ptr */
64        public static function string(FFI\CData $ptr, ?int $size = null): string {}
65
66        /** @prefer-ref $ptr */
67        public static function isNull(FFI\CData $ptr): bool {}
68    }
69
70}
71
72namespace FFI {
73
74	/** @not-serializable */
75    final class CData {
76    }
77
78	/** @not-serializable */
79    final class CType {
80        /** @cvalue ZEND_FFI_TYPE_VOID */
81        public const int TYPE_VOID = UNKNOWN;
82        /** @cvalue ZEND_FFI_TYPE_FLOAT */
83        public const int TYPE_FLOAT = UNKNOWN;
84        /** @cvalue ZEND_FFI_TYPE_DOUBLE */
85        public const int TYPE_DOUBLE = UNKNOWN;
86#ifdef HAVE_LONG_DOUBLE
87        /** @cvalue ZEND_FFI_TYPE_LONGDOUBLE */
88        public const int TYPE_LONGDOUBLE = UNKNOWN;
89#endif
90        /** @cvalue ZEND_FFI_TYPE_UINT8 */
91        public const int TYPE_UINT8 = UNKNOWN;
92        /** @cvalue ZEND_FFI_TYPE_SINT8 */
93        public const int TYPE_SINT8 = UNKNOWN;
94        /** @cvalue ZEND_FFI_TYPE_UINT16 */
95        public const int TYPE_UINT16 = UNKNOWN;
96        /** @cvalue ZEND_FFI_TYPE_SINT16 */
97        public const int TYPE_SINT16 = UNKNOWN;
98        /** @cvalue ZEND_FFI_TYPE_UINT32 */
99        public const int TYPE_UINT32 = UNKNOWN;
100        /** @cvalue ZEND_FFI_TYPE_SINT32 */
101        public const int TYPE_SINT32 = UNKNOWN;
102        /** @cvalue ZEND_FFI_TYPE_UINT64 */
103        public const int TYPE_UINT64 = UNKNOWN;
104        /** @cvalue ZEND_FFI_TYPE_SINT64 */
105        public const int TYPE_SINT64 = UNKNOWN;
106        /** @cvalue ZEND_FFI_TYPE_ENUM */
107        public const int TYPE_ENUM = UNKNOWN;
108        /** @cvalue ZEND_FFI_TYPE_BOOL */
109        public const int TYPE_BOOL = UNKNOWN;
110        /** @cvalue ZEND_FFI_TYPE_CHAR */
111        public const int TYPE_CHAR = UNKNOWN;
112        /** @cvalue ZEND_FFI_TYPE_POINTER */
113        public const int TYPE_POINTER = UNKNOWN;
114        /** @cvalue ZEND_FFI_TYPE_FUNC */
115        public const int TYPE_FUNC = UNKNOWN;
116        /** @cvalue ZEND_FFI_TYPE_ARRAY */
117        public const int TYPE_ARRAY = UNKNOWN;
118        /** @cvalue ZEND_FFI_TYPE_STRUCT */
119        public const int TYPE_STRUCT = UNKNOWN;
120
121        /** @cvalue ZEND_FFI_ATTR_CONST */
122        public const int ATTR_CONST = UNKNOWN;
123        /** @cvalue ZEND_FFI_ATTR_INCOMPLETE_TAG */
124        public const int ATTR_INCOMPLETE_TAG = UNKNOWN;
125        /** @cvalue ZEND_FFI_ATTR_VARIADIC */
126        public const int ATTR_VARIADIC = UNKNOWN;
127        /** @cvalue ZEND_FFI_ATTR_INCOMPLETE_ARRAY */
128        public const int ATTR_INCOMPLETE_ARRAY = UNKNOWN;
129        /** @cvalue ZEND_FFI_ATTR_VLA */
130        public const int ATTR_VLA = UNKNOWN;
131        /** @cvalue ZEND_FFI_ATTR_UNION */
132        public const int ATTR_UNION = UNKNOWN;
133        /** @cvalue ZEND_FFI_ATTR_PACKED */
134        public const int ATTR_PACKED = UNKNOWN;
135        /** @cvalue ZEND_FFI_ATTR_MS_STRUCT */
136        public const int ATTR_MS_STRUCT = UNKNOWN;
137        /** @cvalue ZEND_FFI_ATTR_GCC_STRUCT */
138        public const int ATTR_GCC_STRUCT = UNKNOWN;
139
140        /** @cvalue ZEND_FFI_ABI_DEFAULT */
141        public const int ABI_DEFAULT = UNKNOWN;
142        /** @cvalue ZEND_FFI_ABI_CDECL */
143        public const int ABI_CDECL = UNKNOWN;
144        /** @cvalue ZEND_FFI_ABI_FASTCALL */
145        public const int ABI_FASTCALL = UNKNOWN;
146        /** @cvalue ZEND_FFI_ABI_THISCALL */
147        public const int ABI_THISCALL = UNKNOWN;
148        /** @cvalue ZEND_FFI_ABI_STDCALL */
149        public const int ABI_STDCALL = UNKNOWN;
150        /** @cvalue ZEND_FFI_ABI_PASCAL */
151        public const int ABI_PASCAL = UNKNOWN;
152        /** @cvalue ZEND_FFI_ABI_REGISTER */
153        public const int ABI_REGISTER = UNKNOWN;
154        /** @cvalue ZEND_FFI_ABI_MS */
155        public const int ABI_MS = UNKNOWN;
156        /** @cvalue ZEND_FFI_ABI_SYSV */
157        public const int ABI_SYSV = UNKNOWN;
158        /** @cvalue ZEND_FFI_ABI_VECTORCALL */
159        public const int ABI_VECTORCALL = UNKNOWN;
160
161        public function getName(): string {}
162
163        public function getKind(): int {}
164        public function getSize(): int {}
165        public function getAlignment(): int {}
166        public function getAttributes(): int {}
167
168        public function getEnumKind(): int {}
169
170        public function getArrayElementType(): CType {}
171        public function getArrayLength(): int {}
172
173        public function getPointerType(): CType {}
174
175        public function getStructFieldNames(): array {}
176        public function getStructFieldOffset(string $name): int {}
177        public function getStructFieldType(string $name): CType {}
178
179        public function getFuncABI(): int {}
180        public function getFuncReturnType(): CType {}
181        public function getFuncParameterCount(): int {}
182        public function getFuncParameterType(int $index): CType {}
183    }
184
185    class Exception extends \Error {
186    }
187
188    final class ParserException extends Exception {
189    }
190}
191