php-internal-docs 8.4.8
Unofficial docs for php/php-src
Loading...
Searching...
No Matches
php_ffi.h File Reference

Go to the source code of this file.

Data Structures

struct  _zend_ffi_dcl
 
struct  _zend_ffi_val
 

Macros

#define phpext_ffi_ptr   &ffi_module_entry
 
#define PHP_FFI_API
 
#define FFI_G(v)
 
#define ZEND_FFI_DCL_VOID   (1<<0)
 
#define ZEND_FFI_DCL_CHAR   (1<<1)
 
#define ZEND_FFI_DCL_SHORT   (1<<2)
 
#define ZEND_FFI_DCL_INT   (1<<3)
 
#define ZEND_FFI_DCL_LONG   (1<<4)
 
#define ZEND_FFI_DCL_LONG_LONG   (1<<5)
 
#define ZEND_FFI_DCL_FLOAT   (1<<6)
 
#define ZEND_FFI_DCL_DOUBLE   (1<<7)
 
#define ZEND_FFI_DCL_SIGNED   (1<<8)
 
#define ZEND_FFI_DCL_UNSIGNED   (1<<9)
 
#define ZEND_FFI_DCL_BOOL   (1<<10)
 
#define ZEND_FFI_DCL_COMPLEX   (1<<11)
 
#define ZEND_FFI_DCL_STRUCT   (1<<12)
 
#define ZEND_FFI_DCL_UNION   (1<<13)
 
#define ZEND_FFI_DCL_ENUM   (1<<14)
 
#define ZEND_FFI_DCL_TYPEDEF_NAME   (1<<15)
 
#define ZEND_FFI_DCL_TYPE_SPECIFIERS
 
#define ZEND_FFI_DCL_TYPEDEF   (1<<16)
 
#define ZEND_FFI_DCL_EXTERN   (1<<17)
 
#define ZEND_FFI_DCL_STATIC   (1<<18)
 
#define ZEND_FFI_DCL_AUTO   (1<<19)
 
#define ZEND_FFI_DCL_REGISTER   (1<<20)
 
#define ZEND_FFI_DCL_STORAGE_CLASS
 
#define ZEND_FFI_DCL_CONST   (1<<21)
 
#define ZEND_FFI_DCL_RESTRICT   (1<<22)
 
#define ZEND_FFI_DCL_VOLATILE   (1<<23)
 
#define ZEND_FFI_DCL_ATOMIC   (1<<24)
 
#define ZEND_FFI_DCL_TYPE_QUALIFIERS
 
#define ZEND_FFI_DCL_INLINE   (1<<25)
 
#define ZEND_FFI_DCL_NO_RETURN   (1<<26)
 
#define ZEND_FFI_ABI_DEFAULT   0
 
#define ZEND_FFI_ABI_CDECL   1
 
#define ZEND_FFI_ABI_FASTCALL   2
 
#define ZEND_FFI_ABI_THISCALL   3
 
#define ZEND_FFI_ABI_STDCALL   4
 
#define ZEND_FFI_ABI_PASCAL   5
 
#define ZEND_FFI_ABI_REGISTER   6
 
#define ZEND_FFI_ABI_MS   7
 
#define ZEND_FFI_ABI_SYSV   8
 
#define ZEND_FFI_ABI_VECTORCALL   9
 
#define ZEND_FFI_ATTR_CONST   (1<<0)
 
#define ZEND_FFI_ATTR_INCOMPLETE_TAG   (1<<1)
 
#define ZEND_FFI_ATTR_VARIADIC   (1<<2)
 
#define ZEND_FFI_ATTR_INCOMPLETE_ARRAY   (1<<3)
 
#define ZEND_FFI_ATTR_VLA   (1<<4)
 
#define ZEND_FFI_ATTR_UNION   (1<<5)
 
#define ZEND_FFI_ATTR_PACKED   (1<<6)
 
#define ZEND_FFI_ATTR_MS_STRUCT   (1<<7)
 
#define ZEND_FFI_ATTR_GCC_STRUCT   (1<<8)
 
#define ZEND_FFI_ATTR_PERSISTENT   (1<<9)
 
#define ZEND_FFI_ATTR_STORED   (1<<10)
 
#define ZEND_FFI_STRUCT_ATTRS
 
#define ZEND_FFI_ENUM_ATTRS    (ZEND_FFI_ATTR_PACKED)
 
#define ZEND_FFI_ARRAY_ATTRS    (ZEND_FFI_ATTR_CONST|ZEND_FFI_ATTR_VLA|ZEND_FFI_ATTR_INCOMPLETE_ARRAY)
 
#define ZEND_FFI_FUNC_ATTRS    (ZEND_FFI_ATTR_VARIADIC)
 
#define ZEND_FFI_POINTER_ATTRS    (ZEND_FFI_ATTR_CONST)
 
#define ZEND_FFI_ATTR_INIT   {0, 0, 0, 0, NULL}
 

Typedefs

typedef enum _zend_ffi_api_restriction zend_ffi_api_restriction
 
typedef struct _zend_ffi_type zend_ffi_type
 
typedef struct _zend_ffi_dcl zend_ffi_dcl
 
typedef enum _zend_ffi_val_kind zend_ffi_val_kind
 
typedef double zend_ffi_double
 
typedef struct _zend_ffi_val zend_ffi_val
 

Enumerations

enum  _zend_ffi_api_restriction { ZEND_FFI_DISABLED = 0 , ZEND_FFI_ENABLED = 1 , ZEND_FFI_PRELOAD = 2 }
 
enum  _zend_ffi_val_kind {
  ZEND_FFI_VAL_EMPTY , ZEND_FFI_VAL_ERROR , ZEND_FFI_VAL_INT32 , ZEND_FFI_VAL_INT64 ,
  ZEND_FFI_VAL_UINT32 , ZEND_FFI_VAL_UINT64 , ZEND_FFI_VAL_FLOAT , ZEND_FFI_VAL_DOUBLE ,
  ZEND_FFI_VAL_LONG_DOUBLE , ZEND_FFI_VAL_CHAR , ZEND_FFI_VAL_STRING , ZEND_FFI_VAL_NAME
}
 

Functions

zend_result zend_ffi_parse_decl (const char *str, size_t len)
 
zend_result zend_ffi_parse_type (const char *str, size_t len, zend_ffi_dcl *dcl)
 
void zend_ffi_cleanup_dcl (zend_ffi_dcl *dcl)
 
void ZEND_NORETURN zend_ffi_parser_error (const char *msg,...)
 
bool zend_ffi_is_typedef_name (const char *name, size_t name_len)
 
void zend_ffi_resolve_typedef (const char *name, size_t name_len, zend_ffi_dcl *dcl)
 
void zend_ffi_resolve_const (const char *name, size_t name_len, zend_ffi_val *val)
 
void zend_ffi_declare_tag (const char *name, size_t name_len, zend_ffi_dcl *dcl, bool incomplete)
 
void zend_ffi_make_enum_type (zend_ffi_dcl *dcl)
 
void zend_ffi_add_enum_val (zend_ffi_dcl *enum_dcl, const char *name, size_t name_len, zend_ffi_val *val, int64_t *min, int64_t *max, int64_t *last)
 
void zend_ffi_make_struct_type (zend_ffi_dcl *dcl)
 
void zend_ffi_add_field (zend_ffi_dcl *struct_dcl, const char *name, size_t name_len, zend_ffi_dcl *field_dcl)
 
void zend_ffi_add_anonymous_field (zend_ffi_dcl *struct_dcl, zend_ffi_dcl *field_dcl)
 
void zend_ffi_add_bit_field (zend_ffi_dcl *struct_dcl, const char *name, size_t name_len, zend_ffi_dcl *field_dcl, zend_ffi_val *bits)
 
void zend_ffi_adjust_struct_size (zend_ffi_dcl *dcl)
 
void zend_ffi_make_pointer_type (zend_ffi_dcl *dcl)
 
void zend_ffi_make_array_type (zend_ffi_dcl *dcl, zend_ffi_val *len)
 
void zend_ffi_make_func_type (zend_ffi_dcl *dcl, HashTable *args, zend_ffi_dcl *nested_dcl)
 
void zend_ffi_add_arg (HashTable **args, const char *name, size_t name_len, zend_ffi_dcl *arg_dcl)
 
void zend_ffi_declare (const char *name, size_t name_len, zend_ffi_dcl *dcl)
 
void zend_ffi_add_attribute (zend_ffi_dcl *dcl, const char *name, size_t name_len)
 
void zend_ffi_add_attribute_value (zend_ffi_dcl *dcl, const char *name, size_t name_len, int n, zend_ffi_val *val)
 
void zend_ffi_add_msvc_attribute_value (zend_ffi_dcl *dcl, const char *name, size_t name_len, zend_ffi_val *val)
 
void zend_ffi_set_abi (zend_ffi_dcl *dcl, uint16_t abi)
 
void zend_ffi_nested_declaration (zend_ffi_dcl *dcl, zend_ffi_dcl *nested_dcl)
 
void zend_ffi_align_as_type (zend_ffi_dcl *dcl, zend_ffi_dcl *align_dcl)
 
void zend_ffi_align_as_val (zend_ffi_dcl *dcl, zend_ffi_val *align_val)
 
void zend_ffi_validate_type_name (zend_ffi_dcl *dcl)
 
void zend_ffi_expr_conditional (zend_ffi_val *val, zend_ffi_val *op2, zend_ffi_val *op3)
 
void zend_ffi_expr_bool_or (zend_ffi_val *val, zend_ffi_val *op2)
 
void zend_ffi_expr_bool_and (zend_ffi_val *val, zend_ffi_val *op2)
 
void zend_ffi_expr_bw_or (zend_ffi_val *val, zend_ffi_val *op2)
 
void zend_ffi_expr_bw_xor (zend_ffi_val *val, zend_ffi_val *op2)
 
void zend_ffi_expr_bw_and (zend_ffi_val *val, zend_ffi_val *op2)
 
void zend_ffi_expr_is_equal (zend_ffi_val *val, zend_ffi_val *op2)
 
void zend_ffi_expr_is_not_equal (zend_ffi_val *val, zend_ffi_val *op2)
 
void zend_ffi_expr_is_less (zend_ffi_val *val, zend_ffi_val *op2)
 
void zend_ffi_expr_is_greater (zend_ffi_val *val, zend_ffi_val *op2)
 
void zend_ffi_expr_is_less_or_equal (zend_ffi_val *val, zend_ffi_val *op2)
 
void zend_ffi_expr_is_greater_or_equal (zend_ffi_val *val, zend_ffi_val *op2)
 
void zend_ffi_expr_shift_left (zend_ffi_val *val, zend_ffi_val *op2)
 
void zend_ffi_expr_shift_right (zend_ffi_val *val, zend_ffi_val *op2)
 
void zend_ffi_expr_add (zend_ffi_val *val, zend_ffi_val *op2)
 
void zend_ffi_expr_sub (zend_ffi_val *val, zend_ffi_val *op2)
 
void zend_ffi_expr_mul (zend_ffi_val *val, zend_ffi_val *op2)
 
void zend_ffi_expr_div (zend_ffi_val *val, zend_ffi_val *op2)
 
void zend_ffi_expr_mod (zend_ffi_val *val, zend_ffi_val *op2)
 
void zend_ffi_expr_cast (zend_ffi_val *val, zend_ffi_dcl *dcl)
 
void zend_ffi_expr_plus (zend_ffi_val *val)
 
void zend_ffi_expr_neg (zend_ffi_val *val)
 
void zend_ffi_expr_bw_not (zend_ffi_val *val)
 
void zend_ffi_expr_bool_not (zend_ffi_val *val)
 
void zend_ffi_expr_sizeof_val (zend_ffi_val *val)
 
void zend_ffi_expr_sizeof_type (zend_ffi_val *val, zend_ffi_dcl *dcl)
 
void zend_ffi_expr_alignof_val (zend_ffi_val *val)
 
void zend_ffi_expr_alignof_type (zend_ffi_val *val, zend_ffi_dcl *dcl)
 
void zend_ffi_val_number (zend_ffi_val *val, int base, const char *str, size_t str_len)
 
void zend_ffi_val_float_number (zend_ffi_val *val, const char *str, size_t str_len)
 
void zend_ffi_val_string (zend_ffi_val *val, const char *str, size_t str_len)
 
void zend_ffi_val_character (zend_ffi_val *val, const char *str, size_t str_len)
 

Variables

zend_module_entry ffi_module_entry
 
zend_ffi_api_restriction restriction
 
bool is_cli
 
HashTable types
 
char * preload
 
HashTablescopes
 
HashTablecallbacks
 
HashTableweak_types
 
JMP_BUF bailout
 
unsigned const char * buf
 
unsigned const char * end
 
unsigned const char * pos
 
unsigned const char * text
 
int line
 
HashTablesymbols
 
HashTabletags
 
bool allow_vla
 
bool attribute_parsing
 
bool persistent
 
uint32_t default_type_attr
 

Macro Definition Documentation

◆ FFI_G

#define FFI_G ( v)
Value:
uint32_t v
Definition cdf.c:1237
zend_ffi * ffi
Definition ffi.c:3027
#define ZEND_MODULE_GLOBALS_ACCESSOR(module_name, v)
Definition zend_API.h:274

Definition at line 73 of file php_ffi.h.

◆ PHP_FFI_API

#define PHP_FFI_API

Definition at line 70 of file php_ffi.h.

◆ phpext_ffi_ptr

#define phpext_ffi_ptr   &ffi_module_entry

Definition at line 21 of file php_ffi.h.

◆ ZEND_FFI_ABI_CDECL

#define ZEND_FFI_ABI_CDECL   1

Definition at line 125 of file php_ffi.h.

◆ ZEND_FFI_ABI_DEFAULT

#define ZEND_FFI_ABI_DEFAULT   0

Definition at line 123 of file php_ffi.h.

◆ ZEND_FFI_ABI_FASTCALL

#define ZEND_FFI_ABI_FASTCALL   2

Definition at line 126 of file php_ffi.h.

◆ ZEND_FFI_ABI_MS

#define ZEND_FFI_ABI_MS   7

Definition at line 131 of file php_ffi.h.

◆ ZEND_FFI_ABI_PASCAL

#define ZEND_FFI_ABI_PASCAL   5

Definition at line 129 of file php_ffi.h.

◆ ZEND_FFI_ABI_REGISTER

#define ZEND_FFI_ABI_REGISTER   6

Definition at line 130 of file php_ffi.h.

◆ ZEND_FFI_ABI_STDCALL

#define ZEND_FFI_ABI_STDCALL   4

Definition at line 128 of file php_ffi.h.

◆ ZEND_FFI_ABI_SYSV

#define ZEND_FFI_ABI_SYSV   8

Definition at line 132 of file php_ffi.h.

◆ ZEND_FFI_ABI_THISCALL

#define ZEND_FFI_ABI_THISCALL   3

Definition at line 127 of file php_ffi.h.

◆ ZEND_FFI_ABI_VECTORCALL

#define ZEND_FFI_ABI_VECTORCALL   9

Definition at line 133 of file php_ffi.h.

◆ ZEND_FFI_ARRAY_ATTRS

Definition at line 155 of file php_ffi.h.

◆ ZEND_FFI_ATTR_CONST

#define ZEND_FFI_ATTR_CONST   (1<<0)

Definition at line 135 of file php_ffi.h.

◆ ZEND_FFI_ATTR_GCC_STRUCT

#define ZEND_FFI_ATTR_GCC_STRUCT   (1<<8)

Definition at line 143 of file php_ffi.h.

◆ ZEND_FFI_ATTR_INCOMPLETE_ARRAY

#define ZEND_FFI_ATTR_INCOMPLETE_ARRAY   (1<<3)

Definition at line 138 of file php_ffi.h.

◆ ZEND_FFI_ATTR_INCOMPLETE_TAG

#define ZEND_FFI_ATTR_INCOMPLETE_TAG   (1<<1)

Definition at line 136 of file php_ffi.h.

◆ ZEND_FFI_ATTR_INIT

#define ZEND_FFI_ATTR_INIT   {0, 0, 0, 0, NULL}

Definition at line 172 of file php_ffi.h.

◆ ZEND_FFI_ATTR_MS_STRUCT

#define ZEND_FFI_ATTR_MS_STRUCT   (1<<7)

Definition at line 142 of file php_ffi.h.

◆ ZEND_FFI_ATTR_PACKED

#define ZEND_FFI_ATTR_PACKED   (1<<6)

Definition at line 141 of file php_ffi.h.

◆ ZEND_FFI_ATTR_PERSISTENT

#define ZEND_FFI_ATTR_PERSISTENT   (1<<9)

Definition at line 145 of file php_ffi.h.

◆ ZEND_FFI_ATTR_STORED

#define ZEND_FFI_ATTR_STORED   (1<<10)

Definition at line 146 of file php_ffi.h.

◆ ZEND_FFI_ATTR_UNION

#define ZEND_FFI_ATTR_UNION   (1<<5)

Definition at line 140 of file php_ffi.h.

◆ ZEND_FFI_ATTR_VARIADIC

#define ZEND_FFI_ATTR_VARIADIC   (1<<2)

Definition at line 137 of file php_ffi.h.

◆ ZEND_FFI_ATTR_VLA

#define ZEND_FFI_ATTR_VLA   (1<<4)

Definition at line 139 of file php_ffi.h.

◆ ZEND_FFI_DCL_ATOMIC

#define ZEND_FFI_DCL_ATOMIC   (1<<24)

Definition at line 114 of file php_ffi.h.

◆ ZEND_FFI_DCL_AUTO

#define ZEND_FFI_DCL_AUTO   (1<<19)

Definition at line 104 of file php_ffi.h.

◆ ZEND_FFI_DCL_BOOL

#define ZEND_FFI_DCL_BOOL   (1<<10)

Definition at line 85 of file php_ffi.h.

◆ ZEND_FFI_DCL_CHAR

#define ZEND_FFI_DCL_CHAR   (1<<1)

Definition at line 76 of file php_ffi.h.

◆ ZEND_FFI_DCL_COMPLEX

#define ZEND_FFI_DCL_COMPLEX   (1<<11)

Definition at line 86 of file php_ffi.h.

◆ ZEND_FFI_DCL_CONST

#define ZEND_FFI_DCL_CONST   (1<<21)

Definition at line 111 of file php_ffi.h.

◆ ZEND_FFI_DCL_DOUBLE

#define ZEND_FFI_DCL_DOUBLE   (1<<7)

Definition at line 82 of file php_ffi.h.

◆ ZEND_FFI_DCL_ENUM

#define ZEND_FFI_DCL_ENUM   (1<<14)

Definition at line 90 of file php_ffi.h.

◆ ZEND_FFI_DCL_EXTERN

#define ZEND_FFI_DCL_EXTERN   (1<<17)

Definition at line 102 of file php_ffi.h.

◆ ZEND_FFI_DCL_FLOAT

#define ZEND_FFI_DCL_FLOAT   (1<<6)

Definition at line 81 of file php_ffi.h.

◆ ZEND_FFI_DCL_INLINE

#define ZEND_FFI_DCL_INLINE   (1<<25)

Definition at line 120 of file php_ffi.h.

◆ ZEND_FFI_DCL_INT

#define ZEND_FFI_DCL_INT   (1<<3)

Definition at line 78 of file php_ffi.h.

◆ ZEND_FFI_DCL_LONG

#define ZEND_FFI_DCL_LONG   (1<<4)

Definition at line 79 of file php_ffi.h.

◆ ZEND_FFI_DCL_LONG_LONG

#define ZEND_FFI_DCL_LONG_LONG   (1<<5)

Definition at line 80 of file php_ffi.h.

◆ ZEND_FFI_DCL_NO_RETURN

#define ZEND_FFI_DCL_NO_RETURN   (1<<26)

Definition at line 121 of file php_ffi.h.

◆ ZEND_FFI_DCL_REGISTER

#define ZEND_FFI_DCL_REGISTER   (1<<20)

Definition at line 105 of file php_ffi.h.

◆ ZEND_FFI_DCL_RESTRICT

#define ZEND_FFI_DCL_RESTRICT   (1<<22)

Definition at line 112 of file php_ffi.h.

◆ ZEND_FFI_DCL_SHORT

#define ZEND_FFI_DCL_SHORT   (1<<2)

Definition at line 77 of file php_ffi.h.

◆ ZEND_FFI_DCL_SIGNED

#define ZEND_FFI_DCL_SIGNED   (1<<8)

Definition at line 83 of file php_ffi.h.

◆ ZEND_FFI_DCL_STATIC

#define ZEND_FFI_DCL_STATIC   (1<<18)

Definition at line 103 of file php_ffi.h.

◆ ZEND_FFI_DCL_STORAGE_CLASS

#define ZEND_FFI_DCL_STORAGE_CLASS
Value:
#define ZEND_FFI_DCL_REGISTER
Definition php_ffi.h:105
#define ZEND_FFI_DCL_TYPEDEF
Definition php_ffi.h:101
#define ZEND_FFI_DCL_STATIC
Definition php_ffi.h:103
#define ZEND_FFI_DCL_AUTO
Definition php_ffi.h:104
#define ZEND_FFI_DCL_EXTERN
Definition php_ffi.h:102

Definition at line 107 of file php_ffi.h.

◆ ZEND_FFI_DCL_STRUCT

#define ZEND_FFI_DCL_STRUCT   (1<<12)

Definition at line 88 of file php_ffi.h.

◆ ZEND_FFI_DCL_TYPE_QUALIFIERS

#define ZEND_FFI_DCL_TYPE_QUALIFIERS
Value:
#define ZEND_FFI_DCL_VOLATILE
Definition php_ffi.h:113
#define ZEND_FFI_DCL_ATOMIC
Definition php_ffi.h:114
#define ZEND_FFI_DCL_CONST
Definition php_ffi.h:111
#define ZEND_FFI_DCL_RESTRICT
Definition php_ffi.h:112

Definition at line 116 of file php_ffi.h.

◆ ZEND_FFI_DCL_TYPE_SPECIFIERS

#define ZEND_FFI_DCL_TYPE_SPECIFIERS
Value:
#define ZEND_FFI_DCL_SHORT
Definition php_ffi.h:77
#define ZEND_FFI_DCL_SIGNED
Definition php_ffi.h:83
#define ZEND_FFI_DCL_TYPEDEF_NAME
Definition php_ffi.h:91
#define ZEND_FFI_DCL_LONG_LONG
Definition php_ffi.h:80
#define ZEND_FFI_DCL_UNSIGNED
Definition php_ffi.h:84
#define ZEND_FFI_DCL_VOID
Definition php_ffi.h:75
#define ZEND_FFI_DCL_BOOL
Definition php_ffi.h:85
#define ZEND_FFI_DCL_DOUBLE
Definition php_ffi.h:82
#define ZEND_FFI_DCL_CHAR
Definition php_ffi.h:76
#define ZEND_FFI_DCL_LONG
Definition php_ffi.h:79
#define ZEND_FFI_DCL_INT
Definition php_ffi.h:78
#define ZEND_FFI_DCL_UNION
Definition php_ffi.h:89
#define ZEND_FFI_DCL_ENUM
Definition php_ffi.h:90
#define ZEND_FFI_DCL_FLOAT
Definition php_ffi.h:81
#define ZEND_FFI_DCL_STRUCT
Definition php_ffi.h:88
#define ZEND_FFI_DCL_COMPLEX
Definition php_ffi.h:86

Definition at line 93 of file php_ffi.h.

◆ ZEND_FFI_DCL_TYPEDEF

#define ZEND_FFI_DCL_TYPEDEF   (1<<16)

Definition at line 101 of file php_ffi.h.

◆ ZEND_FFI_DCL_TYPEDEF_NAME

#define ZEND_FFI_DCL_TYPEDEF_NAME   (1<<15)

Definition at line 91 of file php_ffi.h.

◆ ZEND_FFI_DCL_UNION

#define ZEND_FFI_DCL_UNION   (1<<13)

Definition at line 89 of file php_ffi.h.

◆ ZEND_FFI_DCL_UNSIGNED

#define ZEND_FFI_DCL_UNSIGNED   (1<<9)

Definition at line 84 of file php_ffi.h.

◆ ZEND_FFI_DCL_VOID

#define ZEND_FFI_DCL_VOID   (1<<0)

Definition at line 75 of file php_ffi.h.

◆ ZEND_FFI_DCL_VOLATILE

#define ZEND_FFI_DCL_VOLATILE   (1<<23)

Definition at line 113 of file php_ffi.h.

◆ ZEND_FFI_ENUM_ATTRS

#define ZEND_FFI_ENUM_ATTRS    (ZEND_FFI_ATTR_PACKED)

Definition at line 152 of file php_ffi.h.

◆ ZEND_FFI_FUNC_ATTRS

#define ZEND_FFI_FUNC_ATTRS    (ZEND_FFI_ATTR_VARIADIC)

Definition at line 158 of file php_ffi.h.

◆ ZEND_FFI_POINTER_ATTRS

#define ZEND_FFI_POINTER_ATTRS    (ZEND_FFI_ATTR_CONST)

Definition at line 161 of file php_ffi.h.

◆ ZEND_FFI_STRUCT_ATTRS

#define ZEND_FFI_STRUCT_ATTRS
Value:
#define ZEND_FFI_ATTR_UNION
Definition php_ffi.h:140
#define ZEND_FFI_ATTR_GCC_STRUCT
Definition php_ffi.h:143
#define ZEND_FFI_ATTR_MS_STRUCT
Definition php_ffi.h:142
#define ZEND_FFI_ATTR_PACKED
Definition php_ffi.h:141

Definition at line 148 of file php_ffi.h.

Typedef Documentation

◆ zend_ffi_api_restriction

◆ zend_ffi_dcl

typedef struct _zend_ffi_dcl zend_ffi_dcl

◆ zend_ffi_double

typedef double zend_ffi_double

Definition at line 192 of file php_ffi.h.

◆ zend_ffi_type

typedef struct _zend_ffi_type zend_ffi_type

Definition at line 29 of file php_ffi.h.

◆ zend_ffi_val

typedef struct _zend_ffi_val zend_ffi_val

◆ zend_ffi_val_kind

Enumeration Type Documentation

◆ _zend_ffi_api_restriction

Enumerator
ZEND_FFI_DISABLED 
ZEND_FFI_ENABLED 
ZEND_FFI_PRELOAD 

Definition at line 23 of file php_ffi.h.

◆ _zend_ffi_val_kind

Enumerator
ZEND_FFI_VAL_EMPTY 
ZEND_FFI_VAL_ERROR 
ZEND_FFI_VAL_INT32 
ZEND_FFI_VAL_INT64 
ZEND_FFI_VAL_UINT32 
ZEND_FFI_VAL_UINT64 
ZEND_FFI_VAL_FLOAT 
ZEND_FFI_VAL_DOUBLE 
ZEND_FFI_VAL_LONG_DOUBLE 
ZEND_FFI_VAL_CHAR 
ZEND_FFI_VAL_STRING 
ZEND_FFI_VAL_NAME 

Definition at line 174 of file php_ffi.h.

Function Documentation

◆ zend_ffi_add_anonymous_field()

void zend_ffi_add_anonymous_field ( zend_ffi_dcl * struct_dcl,
zend_ffi_dcl * field_dcl )

Definition at line 6181 of file ffi.c.

◆ zend_ffi_add_arg()

void zend_ffi_add_arg ( HashTable ** args,
const char * name,
size_t name_len,
zend_ffi_dcl * arg_dcl )

Definition at line 6597 of file ffi.c.

◆ zend_ffi_add_attribute()

void zend_ffi_add_attribute ( zend_ffi_dcl * dcl,
const char * name,
size_t name_len )

Definition at line 6841 of file ffi.c.

◆ zend_ffi_add_attribute_value()

void zend_ffi_add_attribute_value ( zend_ffi_dcl * dcl,
const char * name,
size_t name_len,
int n,
zend_ffi_val * val )

Definition at line 6924 of file ffi.c.

◆ zend_ffi_add_bit_field()

void zend_ffi_add_bit_field ( zend_ffi_dcl * struct_dcl,
const char * name,
size_t name_len,
zend_ffi_dcl * field_dcl,
zend_ffi_val * bits )

Definition at line 6249 of file ffi.c.

◆ zend_ffi_add_enum_val()

void zend_ffi_add_enum_val ( zend_ffi_dcl * enum_dcl,
const char * name,
size_t name_len,
zend_ffi_val * val,
int64_t * min,
int64_t * max,
int64_t * last )

Definition at line 5975 of file ffi.c.

◆ zend_ffi_add_field()

void zend_ffi_add_field ( zend_ffi_dcl * struct_dcl,
const char * name,
size_t name_len,
zend_ffi_dcl * field_dcl )

Definition at line 6137 of file ffi.c.

◆ zend_ffi_add_msvc_attribute_value()

void zend_ffi_add_msvc_attribute_value ( zend_ffi_dcl * dcl,
const char * name,
size_t name_len,
zend_ffi_val * val )

Definition at line 7039 of file ffi.c.

◆ zend_ffi_adjust_struct_size()

void zend_ffi_adjust_struct_size ( zend_ffi_dcl * dcl)

Definition at line 6351 of file ffi.c.

◆ zend_ffi_align_as_type()

void zend_ffi_align_as_type ( zend_ffi_dcl * dcl,
zend_ffi_dcl * align_dcl )

Definition at line 7114 of file ffi.c.

◆ zend_ffi_align_as_val()

void zend_ffi_align_as_val ( zend_ffi_dcl * dcl,
zend_ffi_val * align_val )

Definition at line 7121 of file ffi.c.

◆ zend_ffi_cleanup_dcl()

void zend_ffi_cleanup_dcl ( zend_ffi_dcl * dcl)

Definition at line 3639 of file ffi.c.

◆ zend_ffi_declare()

void zend_ffi_declare ( const char * name,
size_t name_len,
zend_ffi_dcl * dcl )

Definition at line 6640 of file ffi.c.

◆ zend_ffi_declare_tag()

void zend_ffi_declare_tag ( const char * name,
size_t name_len,
zend_ffi_dcl * dcl,
bool incomplete )

Definition at line 6729 of file ffi.c.

◆ zend_ffi_expr_add()

void zend_ffi_expr_add ( zend_ffi_val * val,
zend_ffi_val * op2 )

Definition at line 7468 of file ffi.c.

◆ zend_ffi_expr_alignof_type()

void zend_ffi_expr_alignof_type ( zend_ffi_val * val,
zend_ffi_dcl * dcl )

Definition at line 7764 of file ffi.c.

◆ zend_ffi_expr_alignof_val()

void zend_ffi_expr_alignof_val ( zend_ffi_val * val)

Definition at line 7733 of file ffi.c.

◆ zend_ffi_expr_bool_and()

void zend_ffi_expr_bool_and ( zend_ffi_val * val,
zend_ffi_val * op2 )

Definition at line 7390 of file ffi.c.

◆ zend_ffi_expr_bool_not()

void zend_ffi_expr_bool_not ( zend_ffi_val * val)

Definition at line 7674 of file ffi.c.

◆ zend_ffi_expr_bool_or()

void zend_ffi_expr_bool_or ( zend_ffi_val * val,
zend_ffi_val * op2 )

Definition at line 7378 of file ffi.c.

◆ zend_ffi_expr_bw_and()

void zend_ffi_expr_bw_and ( zend_ffi_val * val,
zend_ffi_val * op2 )

Definition at line 7414 of file ffi.c.

◆ zend_ffi_expr_bw_not()

void zend_ffi_expr_bw_not ( zend_ffi_val * val)

Definition at line 7660 of file ffi.c.

◆ zend_ffi_expr_bw_or()

void zend_ffi_expr_bw_or ( zend_ffi_val * val,
zend_ffi_val * op2 )

Definition at line 7402 of file ffi.c.

◆ zend_ffi_expr_bw_xor()

void zend_ffi_expr_bw_xor ( zend_ffi_val * val,
zend_ffi_val * op2 )

Definition at line 7408 of file ffi.c.

◆ zend_ffi_expr_cast()

void zend_ffi_expr_cast ( zend_ffi_val * val,
zend_ffi_dcl * dcl )

Definition at line 7498 of file ffi.c.

◆ zend_ffi_expr_conditional()

void zend_ffi_expr_conditional ( zend_ffi_val * val,
zend_ffi_val * op2,
zend_ffi_val * op3 )

Definition at line 7365 of file ffi.c.

◆ zend_ffi_expr_div()

void zend_ffi_expr_div ( zend_ffi_val * val,
zend_ffi_val * op2 )

Definition at line 7486 of file ffi.c.

◆ zend_ffi_expr_is_equal()

void zend_ffi_expr_is_equal ( zend_ffi_val * val,
zend_ffi_val * op2 )

Definition at line 7420 of file ffi.c.

◆ zend_ffi_expr_is_greater()

void zend_ffi_expr_is_greater ( zend_ffi_val * val,
zend_ffi_val * op2 )

Definition at line 7438 of file ffi.c.

◆ zend_ffi_expr_is_greater_or_equal()

void zend_ffi_expr_is_greater_or_equal ( zend_ffi_val * val,
zend_ffi_val * op2 )

Definition at line 7450 of file ffi.c.

◆ zend_ffi_expr_is_less()

void zend_ffi_expr_is_less ( zend_ffi_val * val,
zend_ffi_val * op2 )

Definition at line 7432 of file ffi.c.

◆ zend_ffi_expr_is_less_or_equal()

void zend_ffi_expr_is_less_or_equal ( zend_ffi_val * val,
zend_ffi_val * op2 )

Definition at line 7444 of file ffi.c.

◆ zend_ffi_expr_is_not_equal()

void zend_ffi_expr_is_not_equal ( zend_ffi_val * val,
zend_ffi_val * op2 )

Definition at line 7426 of file ffi.c.

◆ zend_ffi_expr_mod()

void zend_ffi_expr_mod ( zend_ffi_val * val,
zend_ffi_val * op2 )

Definition at line 7492 of file ffi.c.

◆ zend_ffi_expr_mul()

void zend_ffi_expr_mul ( zend_ffi_val * val,
zend_ffi_val * op2 )

Definition at line 7480 of file ffi.c.

◆ zend_ffi_expr_neg()

void zend_ffi_expr_neg ( zend_ffi_val * val)

Definition at line 7644 of file ffi.c.

◆ zend_ffi_expr_plus()

void zend_ffi_expr_plus ( zend_ffi_val * val)

Definition at line 7632 of file ffi.c.

◆ zend_ffi_expr_shift_left()

void zend_ffi_expr_shift_left ( zend_ffi_val * val,
zend_ffi_val * op2 )

Definition at line 7456 of file ffi.c.

◆ zend_ffi_expr_shift_right()

void zend_ffi_expr_shift_right ( zend_ffi_val * val,
zend_ffi_val * op2 )

Definition at line 7462 of file ffi.c.

◆ zend_ffi_expr_sizeof_type()

void zend_ffi_expr_sizeof_type ( zend_ffi_val * val,
zend_ffi_dcl * dcl )

Definition at line 7721 of file ffi.c.

◆ zend_ffi_expr_sizeof_val()

void zend_ffi_expr_sizeof_val ( zend_ffi_val * val)

Definition at line 7683 of file ffi.c.

◆ zend_ffi_expr_sub()

void zend_ffi_expr_sub ( zend_ffi_val * val,
zend_ffi_val * op2 )

Definition at line 7474 of file ffi.c.

◆ zend_ffi_is_typedef_name()

bool zend_ffi_is_typedef_name ( const char * name,
size_t name_len )

Definition at line 5872 of file ffi.c.

◆ zend_ffi_make_array_type()

void zend_ffi_make_array_type ( zend_ffi_dcl * dcl,
zend_ffi_val * len )

Definition at line 6399 of file ffi.c.

◆ zend_ffi_make_enum_type()

void zend_ffi_make_enum_type ( zend_ffi_dcl * dcl)

Definition at line 5955 of file ffi.c.

◆ zend_ffi_make_func_type()

void zend_ffi_make_func_type ( zend_ffi_dcl * dcl,
HashTable * args,
zend_ffi_dcl * nested_dcl )

Definition at line 6459 of file ffi.c.

◆ zend_ffi_make_pointer_type()

void zend_ffi_make_pointer_type ( zend_ffi_dcl * dcl)

Definition at line 6366 of file ffi.c.

◆ zend_ffi_make_struct_type()

void zend_ffi_make_struct_type ( zend_ffi_dcl * dcl)

Definition at line 6085 of file ffi.c.

◆ zend_ffi_nested_declaration()

void zend_ffi_nested_declaration ( zend_ffi_dcl * dcl,
zend_ffi_dcl * nested_dcl )

Definition at line 7098 of file ffi.c.

◆ zend_ffi_parse_decl()

zend_result zend_ffi_parse_decl ( const char * str,
size_t len )

Definition at line 3620 of file ffi_parser.c.

◆ zend_ffi_parse_type()

zend_result zend_ffi_parse_type ( const char * str,
size_t len,
zend_ffi_dcl * dcl )

Definition at line 3633 of file ffi_parser.c.

◆ zend_ffi_parser_error()

void ZEND_NORETURN zend_ffi_parser_error ( const char * msg,
... )

Definition at line 5759 of file ffi.c.

◆ zend_ffi_resolve_const()

void zend_ffi_resolve_const ( const char * name,
size_t name_len,
zend_ffi_val * val )

Definition at line 5915 of file ffi.c.

◆ zend_ffi_resolve_typedef()

void zend_ffi_resolve_typedef ( const char * name,
size_t name_len,
zend_ffi_dcl * dcl )

Definition at line 5891 of file ffi.c.

◆ zend_ffi_set_abi()

void zend_ffi_set_abi ( zend_ffi_dcl * dcl,
uint16_t abi )

Definition at line 6807 of file ffi.c.

◆ zend_ffi_val_character()

void zend_ffi_val_character ( zend_ffi_val * val,
const char * str,
size_t str_len )

Definition at line 7844 of file ffi.c.

◆ zend_ffi_val_float_number()

void zend_ffi_val_float_number ( zend_ffi_val * val,
const char * str,
size_t str_len )

Definition at line 7819 of file ffi.c.

◆ zend_ffi_val_number()

void zend_ffi_val_number ( zend_ffi_val * val,
int base,
const char * str,
size_t str_len )

Definition at line 7773 of file ffi.c.

◆ zend_ffi_val_string()

void zend_ffi_val_string ( zend_ffi_val * val,
const char * str,
size_t str_len )

Definition at line 7832 of file ffi.c.

◆ zend_ffi_validate_type_name()

void zend_ffi_validate_type_name ( zend_ffi_dcl * dcl)

Definition at line 3741 of file ffi.c.

Variable Documentation

◆ allow_vla

bool allow_vla

Definition at line 57 of file php_ffi.h.

◆ attribute_parsing

bool attribute_parsing

Definition at line 58 of file php_ffi.h.

◆ bailout

JMP_BUF bailout

Definition at line 49 of file php_ffi.h.

◆ buf

unsigned const char* buf

Definition at line 50 of file php_ffi.h.

◆ callbacks

HashTable* callbacks

Definition at line 43 of file php_ffi.h.

◆ default_type_attr

uint32_t default_type_attr

Definition at line 60 of file php_ffi.h.

◆ end

unsigned const char* end

Definition at line 51 of file php_ffi.h.

◆ ffi_module_entry

zend_module_entry ffi_module_entry
extern

Definition at line 5733 of file ffi.c.

◆ is_cli

bool is_cli

Definition at line 33 of file php_ffi.h.

◆ line

int line

Definition at line 54 of file php_ffi.h.

◆ persistent

bool persistent

Definition at line 59 of file php_ffi.h.

◆ pos

unsigned const char* pos

Definition at line 52 of file php_ffi.h.

◆ preload

char* preload

Definition at line 39 of file php_ffi.h.

◆ restriction

Definition at line 32 of file php_ffi.h.

◆ scopes

HashTable* scopes

Definition at line 40 of file php_ffi.h.

◆ symbols

HashTable* symbols

Definition at line 55 of file php_ffi.h.

◆ tags

HashTable* tags

Definition at line 56 of file php_ffi.h.

◆ text

unsigned const char* text

Definition at line 53 of file php_ffi.h.

◆ types

HashTable types

Definition at line 36 of file php_ffi.h.

◆ weak_types

HashTable* weak_types

Definition at line 46 of file php_ffi.h.