Skip to content

Declare ext/ffi constants in stubs #8695

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jun 4, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 2 additions & 47 deletions ext/ffi/ffi.c
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@
#include "zend_exceptions.h"
#include "zend_closures.h"
#include "main/SAPI.h"
#include "ffi_arginfo.h"

#include <ffi.h>

Expand Down Expand Up @@ -86,6 +85,8 @@ typedef enum _zend_ffi_type_kind {
ZEND_FFI_TYPE_STRUCT,
} zend_ffi_type_kind;

#include "ffi_arginfo.h"

typedef enum _zend_ffi_flags {
ZEND_FFI_FLAG_CONST = (1 << 0),
ZEND_FFI_FLAG_OWNED = (1 << 1),
Expand Down Expand Up @@ -5237,9 +5238,6 @@ static zend_result zend_ffi_preload(char *preload) /* {{{ */
}
/* }}} */

#define REGISTER_FFI_TYPE_CONSTANT(name) \
zend_declare_class_constant_long(zend_ffi_ctype_ce, #name, sizeof(#name) - 1, ZEND_FFI_ ## name)

/* {{{ ZEND_MINIT_FUNCTION */
ZEND_MINIT_FUNCTION(ffi)
{
Expand Down Expand Up @@ -5384,49 +5382,6 @@ ZEND_MINIT_FUNCTION(ffi)
zend_ffi_ctype_handlers.get_properties = zend_fake_get_properties;
zend_ffi_ctype_handlers.get_gc = zend_fake_get_gc;

REGISTER_FFI_TYPE_CONSTANT(TYPE_VOID);
REGISTER_FFI_TYPE_CONSTANT(TYPE_FLOAT);
REGISTER_FFI_TYPE_CONSTANT(TYPE_DOUBLE);
#ifdef HAVE_LONG_DOUBLE
REGISTER_FFI_TYPE_CONSTANT(TYPE_LONGDOUBLE);
#endif
REGISTER_FFI_TYPE_CONSTANT(TYPE_UINT8);
REGISTER_FFI_TYPE_CONSTANT(TYPE_SINT8);
REGISTER_FFI_TYPE_CONSTANT(TYPE_UINT16);
REGISTER_FFI_TYPE_CONSTANT(TYPE_SINT16);
REGISTER_FFI_TYPE_CONSTANT(TYPE_UINT32);
REGISTER_FFI_TYPE_CONSTANT(TYPE_SINT32);
REGISTER_FFI_TYPE_CONSTANT(TYPE_UINT64);
REGISTER_FFI_TYPE_CONSTANT(TYPE_SINT64);
REGISTER_FFI_TYPE_CONSTANT(TYPE_ENUM);
REGISTER_FFI_TYPE_CONSTANT(TYPE_BOOL);
REGISTER_FFI_TYPE_CONSTANT(TYPE_CHAR);
REGISTER_FFI_TYPE_CONSTANT(TYPE_POINTER);
REGISTER_FFI_TYPE_CONSTANT(TYPE_FUNC);
REGISTER_FFI_TYPE_CONSTANT(TYPE_ARRAY);
REGISTER_FFI_TYPE_CONSTANT(TYPE_STRUCT);

REGISTER_FFI_TYPE_CONSTANT(ATTR_CONST);
REGISTER_FFI_TYPE_CONSTANT(ATTR_INCOMPLETE_TAG);
REGISTER_FFI_TYPE_CONSTANT(ATTR_VARIADIC);
REGISTER_FFI_TYPE_CONSTANT(ATTR_INCOMPLETE_ARRAY);
REGISTER_FFI_TYPE_CONSTANT(ATTR_VLA);
REGISTER_FFI_TYPE_CONSTANT(ATTR_UNION);
REGISTER_FFI_TYPE_CONSTANT(ATTR_PACKED);
REGISTER_FFI_TYPE_CONSTANT(ATTR_MS_STRUCT);
REGISTER_FFI_TYPE_CONSTANT(ATTR_GCC_STRUCT);

REGISTER_FFI_TYPE_CONSTANT(ABI_DEFAULT);
REGISTER_FFI_TYPE_CONSTANT(ABI_CDECL);
REGISTER_FFI_TYPE_CONSTANT(ABI_FASTCALL);
REGISTER_FFI_TYPE_CONSTANT(ABI_THISCALL);
REGISTER_FFI_TYPE_CONSTANT(ABI_STDCALL);
REGISTER_FFI_TYPE_CONSTANT(ABI_PASCAL);
REGISTER_FFI_TYPE_CONSTANT(ABI_REGISTER);
REGISTER_FFI_TYPE_CONSTANT(ABI_MS);
REGISTER_FFI_TYPE_CONSTANT(ABI_SYSV);
REGISTER_FFI_TYPE_CONSTANT(ABI_VECTORCALL);

if (FFI_G(preload)) {
return zend_ffi_preload(FFI_G(preload));
}
Expand Down
195 changes: 195 additions & 0 deletions ext/ffi/ffi.stub.php
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,201 @@ final class CData {

/** @not-serializable */
final class CType {
/**
* @var int
* @cname ZEND_FFI_TYPE_VOID
*/
public const TYPE_VOID = UNKNOWN;
/**
* @var int
* @cname ZEND_FFI_TYPE_FLOAT
*/
public const TYPE_FLOAT = UNKNOWN;
/**
* @var int
* @cname ZEND_FFI_TYPE_DOUBLE
*/
public const TYPE_DOUBLE = UNKNOWN;
#ifdef HAVE_LONG_DOUBLE
/**
* @var int
* @cname ZEND_FFI_TYPE_LONGDOUBLE
*/
public const TYPE_LONGDOUBLE = UNKNOWN;
#endif
/**
* @var int
* @cname ZEND_FFI_TYPE_UINT8
*/
public const TYPE_UINT8 = UNKNOWN;
/**
* @var int
* @cname ZEND_FFI_TYPE_SINT8
*/
public const TYPE_SINT8 = UNKNOWN;
/**
* @var int
* @cname ZEND_FFI_TYPE_UINT16
*/
public const TYPE_UINT16 = UNKNOWN;
/**
* @var int
* @cname ZEND_FFI_TYPE_SINT16
*/
public const TYPE_SINT16 = UNKNOWN;
/**
* @var int
* @cname ZEND_FFI_TYPE_UINT32
*/
public const TYPE_UINT32 = UNKNOWN;
/**
* @var int
* @cname ZEND_FFI_TYPE_SINT32
*/
public const TYPE_SINT32 = UNKNOWN;
/**
* @var int
* @cname ZEND_FFI_TYPE_UINT64
*/
public const TYPE_UINT64 = UNKNOWN;
/**
* @var int
* @cname ZEND_FFI_TYPE_SINT64
*/
public const TYPE_SINT64 = UNKNOWN;
/**
* @var int
* @cname ZEND_FFI_TYPE_ENUM
*/
public const TYPE_ENUM = UNKNOWN;
/**
* @var int
* @cname ZEND_FFI_TYPE_BOOL
*/
public const TYPE_BOOL = UNKNOWN;
/**
* @var int
* @cname ZEND_FFI_TYPE_CHAR
*/
public const TYPE_CHAR = UNKNOWN;
/**
* @var int
* @cname ZEND_FFI_TYPE_POINTER
*/
public const TYPE_POINTER = UNKNOWN;
/**
* @var int
* @cname ZEND_FFI_TYPE_FUNC
*/
public const TYPE_FUNC = UNKNOWN;
/**
* @var int
* @cname ZEND_FFI_TYPE_ARRAY
*/
public const TYPE_ARRAY = UNKNOWN;
/**
* @var int
* @cname ZEND_FFI_TYPE_STRUCT
*/
public const TYPE_STRUCT = UNKNOWN;

/**
* @var int
* @cname ZEND_FFI_ATTR_CONST
*/
public const ATTR_CONST = UNKNOWN;
/**
* @var int
* @cname ZEND_FFI_ATTR_INCOMPLETE_TAG
*/
public const ATTR_INCOMPLETE_TAG = UNKNOWN;
/**
* @var int
* @cname ZEND_FFI_ATTR_VARIADIC
*/
public const ATTR_VARIADIC = UNKNOWN;
/**
* @var int
* @cname ZEND_FFI_ATTR_INCOMPLETE_ARRAY
*/
public const ATTR_INCOMPLETE_ARRAY = UNKNOWN;
/**
* @var int
* @cname ZEND_FFI_ATTR_VLA
*/
public const ATTR_VLA = UNKNOWN;
/**
* @var int
* @cname ZEND_FFI_ATTR_UNION
*/
public const ATTR_UNION = UNKNOWN;
/**
* @var int
* @cname ZEND_FFI_ATTR_PACKED
*/
public const ATTR_PACKED = UNKNOWN;
/**
* @var int
* @cname ZEND_FFI_ATTR_MS_STRUCT
*/
public const ATTR_MS_STRUCT = UNKNOWN;
/**
* @var int
* @cname ZEND_FFI_ATTR_GCC_STRUCT
*/
public const ATTR_GCC_STRUCT = UNKNOWN;

/**
* @var int
* @cname ZEND_FFI_ABI_DEFAULT
*/
public const ABI_DEFAULT = UNKNOWN;
/**
* @var int
* @cname ZEND_FFI_ABI_CDECL
*/
public const ABI_CDECL = UNKNOWN;
/**
* @var int
* @cname ZEND_FFI_ABI_FASTCALL
*/
public const ABI_FASTCALL = UNKNOWN;
/**
* @var int
* @cname ZEND_FFI_ABI_THISCALL
*/
public const ABI_THISCALL = UNKNOWN;
/**
* @var int
* @cname ZEND_FFI_ABI_STDCALL
*/
public const ABI_STDCALL = UNKNOWN;
/**
* @var int
* @cname ZEND_FFI_ABI_PASCAL
*/
public const ABI_PASCAL = UNKNOWN;
/**
* @var int
* @cname ZEND_FFI_ABI_REGISTER
*/
public const ABI_REGISTER = UNKNOWN;
/**
* @var int
* @cname ZEND_FFI_ABI_MS
*/
public const ABI_MS = UNKNOWN;
/**
* @var int
* @cname ZEND_FFI_ABI_SYSV
*/
public const ABI_SYSV = UNKNOWN;
/**
* @var int
* @cname ZEND_FFI_ABI_VECTORCALL
*/
public const ABI_VECTORCALL = UNKNOWN;

public function getName(): string {}

public function getKind(): int {}
Expand Down
Loading