php-internal-docs 8.4.8
Unofficial docs for php/php-src
Loading...
Searching...
No Matches
ffi.c File Reference
#include "php.h"
#include "php_ffi.h"
#include "ext/standard/info.h"
#include "php_scandir.h"
#include "zend_exceptions.h"
#include "zend_closures.h"
#include "zend_weakrefs.h"
#include "main/SAPI.h"
#include "zend_observer.h"
#include <ffi.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include "ffi_arginfo.h"

Go to the source code of this file.

Data Structures

struct  _zend_ffi_tag
 
struct  _zend_ffi_type
 
struct  _zend_ffi_field
 
struct  _zend_ffi_symbol
 
struct  _zend_ffi_scope
 
struct  _zend_ffi
 
struct  _zend_ffi_cdata
 
struct  _zend_ffi_ctype
 
struct  _zend_ffi_ctype_name_buf
 
struct  _zend_ffi_cdata_iterator
 

Macros

#define __BIGGEST_ALIGNMENT__   sizeof(size_t)
 
#define ZEND_FFI_TYPE_OWNED   (1<<0)
 
#define ZEND_FFI_TYPE(t)
 
#define ZEND_FFI_TYPE_IS_OWNED(t)
 
#define ZEND_FFI_TYPE_MAKE_OWNED(t)
 
#define ZEND_FFI_SIZEOF_ARG    MAX(FFI_SIZEOF_ARG, sizeof(double))
 
#define MAX_TYPE_NAME_LEN   256
 
#define ZEND_FFI_VALIDATE_API_RESTRICTION()
 
#define SIMPLE_ATTRIBUTES(_)
 
#define ATTR_ID(name)
 
#define ATTR_NAME(name)
 
#define VALUE_ATTRIBUTES(_)
 
#define zend_ffi_expr_bool(val)
 
#define zend_ffi_expr_math(val, op2, OP)
 
#define zend_ffi_expr_int_math(val, op2, OP)
 
#define zend_ffi_expr_cmp(val, op2, OP)
 

Typedefs

typedef enum _zend_ffi_tag_kind zend_ffi_tag_kind
 
typedef struct _zend_ffi_tag zend_ffi_tag
 
typedef enum _zend_ffi_type_kind zend_ffi_type_kind
 
typedef enum _zend_ffi_flags zend_ffi_flags
 
typedef struct _zend_ffi_field zend_ffi_field
 
typedef enum _zend_ffi_symbol_kind zend_ffi_symbol_kind
 
typedef struct _zend_ffi_symbol zend_ffi_symbol
 
typedef struct _zend_ffi_scope zend_ffi_scope
 
typedef struct _zend_ffi zend_ffi
 
typedef struct _zend_ffi_cdata zend_ffi_cdata
 
typedef struct _zend_ffi_ctype zend_ffi_ctype
 
typedef struct _zend_ffi_ctype_name_buf zend_ffi_ctype_name_buf
 
typedef struct _zend_ffi_cdata_iterator zend_ffi_cdata_iterator
 

Enumerations

enum  _zend_ffi_tag_kind { ZEND_FFI_TAG_ENUM , ZEND_FFI_TAG_STRUCT , ZEND_FFI_TAG_UNION }
 
enum  _zend_ffi_type_kind {
  ZEND_FFI_TYPE_VOID , ZEND_FFI_TYPE_FLOAT , ZEND_FFI_TYPE_DOUBLE , ZEND_FFI_TYPE_UINT8 ,
  ZEND_FFI_TYPE_SINT8 , ZEND_FFI_TYPE_UINT16 , ZEND_FFI_TYPE_SINT16 , ZEND_FFI_TYPE_UINT32 ,
  ZEND_FFI_TYPE_SINT32 , ZEND_FFI_TYPE_UINT64 , ZEND_FFI_TYPE_SINT64 , ZEND_FFI_TYPE_ENUM ,
  ZEND_FFI_TYPE_BOOL , ZEND_FFI_TYPE_CHAR , ZEND_FFI_TYPE_POINTER , ZEND_FFI_TYPE_FUNC ,
  ZEND_FFI_TYPE_ARRAY , ZEND_FFI_TYPE_STRUCT
}
 
enum  _zend_ffi_flags { ZEND_FFI_FLAG_CONST = (1 << 0) , ZEND_FFI_FLAG_OWNED = (1 << 1) , ZEND_FFI_FLAG_PERSISTENT = (1 << 2) }
 
enum  _zend_ffi_symbol_kind { ZEND_FFI_SYM_TYPE , ZEND_FFI_SYM_CONST , ZEND_FFI_SYM_VAR , ZEND_FFI_SYM_FUNC }
 

Functions

Z_PARAM_OPTIONAL ZEND_PARSE_PARAMETERS_END ()
 
 if (lib)
 
 FFI_G (symbols) = NULL
 
 FFI_G (tags) = NULL
 
 if (code &&ZSTR_LEN(code))
 
 if (CG(compiler_options) &ZEND_COMPILE_PRELOAD_IN_CHILD)
 
 if (ffi)
 
 if (FFI_G(scopes))
 
 if (!scope)
 
void zend_ffi_cleanup_dcl (zend_ffi_dcl *dcl)
 
void zend_ffi_validate_type_name (zend_ffi_dcl *dcl)
 
 if (is_static_call)
 
 if (persistent)
 
 if (type_def)
 
 if (ZEND_FFI_TYPE_IS_OWNED(type))
 
 if (type->size==0)
 
 memset (ptr, 0, type->size)
 
 if (type->kind< ZEND_FFI_TYPE_POINTER)
 
 if (is_const)
 
 Z_PARAM_OBJECT_OF_CLASS_EX (zv, zend_ffi_cdata_ce, 0, 1)
 
 if (ZEND_FFI_TYPE(cdata->type) ->kind==ZEND_FFI_TYPE_POINTER)
 
else if (!(cdata->flags &ZEND_FFI_FLAG_OWNED))
 
 ZVAL_DEREF (zv)
 
 if (Z_TYPE_P(zv) !=IS_OBJECT||Z_OBJCE_P(zv) !=zend_ffi_cdata_ce)
 
 if (old_type->kind==ZEND_FFI_TYPE_POINTER &&type->kind !=ZEND_FFI_TYPE_POINTER &&ZEND_FFI_TYPE(old_type->pointer.type) ->kind==ZEND_FFI_TYPE_VOID)
 
else if (type->size > old_type->size)
 
else if (ptr !=&old_cdata->ptr_holder)
 
 if (old_cdata->flags &ZEND_FFI_FLAG_OWNED)
 
 Z_PARAM_STR (type_def)
 
 FFI_G (default_type_attr)=0
 
 if (zend_ffi_parse_type(ZSTR_VAL(type_def), ZSTR_LEN(type_def), &dcl)==FAILURE)
 
 if (clean_tags &&FFI_G(tags))
 
 if (clean_symbols &&FFI_G(symbols))
 
 Z_PARAM_ZVAL (zv)
 
 if (Z_TYPE_P(zv)==IS_OBJECT &&Z_OBJCE_P(zv)==zend_ffi_cdata_ce)
 
 RETURN_THROWS ()
 
else if (type->attr &ZEND_FFI_ATTR_INCOMPLETE_TAG)
 
 if (ZEND_FFI_TYPE_IS_OWNED(ctype->type))
 
 ZEND_HASH_REVERSE_FOREACH_VAL (dims, val)
 
 ZEND_HASH_FOREACH_END ()
 
 if (GC_REFCOUNT(&cdata->std)==1 &&Z_REFCOUNT_P(arg)==1 &&type->kind==ZEND_FFI_TYPE_POINTER &&cdata->ptr==&cdata->ptr_holder)
 
 RETURN_LONG (type->size)
 
 Z_PARAM_OBJECT_OF_CLASS_EX (zv1, zend_ffi_cdata_ce, 0, 1)
 
 if (type1->kind==ZEND_FFI_TYPE_POINTER)
 
 if (type1->kind !=ZEND_FFI_TYPE_POINTER &&size > type1->size)
 
 ZVAL_DEREF (zv2)
 
 if (Z_TYPE_P(zv2)==IS_STRING)
 
 memcpy (ptr1, ptr2, size)
 
 Z_PARAM_ZVAL (zv1)
 
 Z_PARAM_ZVAL (zv2)
 
 ZVAL_DEREF (zv1)
 
 if (Z_TYPE_P(zv1)==IS_STRING)
 
 if (ret==0)
 
 if (type->kind !=ZEND_FFI_TYPE_POINTER &&size > type->size)
 
 memset (ptr, ch, size)
 
 if (type->kind !=ZEND_FFI_TYPE_POINTER)
 
 if (zend_parse_parameters_none()==FAILURE)
 
 if (!zend_ffi_ctype_name(&buf, ZEND_FFI_TYPE(ctype->type)))
 
 RETURN_STR (res)
 
 RETURN_LONG (type->enumeration.kind)
 
 RETURN_LONG (type->array.length)
 
 RETVAL_ARR (ht)
 
 zend_hash_next_index_insert_new (ht, &zv)
 
 RETURN_LONG (ptr->offset)
 
 RETURN_LONG (type->func.abi)
 
 RETURN_LONG (type->func.args ? zend_hash_num_elements(type->func.args) :0)
 
 if (!type->func.args)
 
 ZEND_MINIT_FUNCTION (ffi)
 
 ZEND_RSHUTDOWN_FUNCTION (ffi)
 
 ZEND_MINFO_FUNCTION (ffi)
 
void zend_ffi_parser_error (const char *format,...)
 
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_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_declare_tag (const char *name, size_t name_len, zend_ffi_dcl *dcl, bool incomplete)
 
void zend_ffi_set_abi (zend_ffi_dcl *dcl, uint16_t abi)
 
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_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_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_stringlib = NULL
 
zend_ffiffi = NULL
 
DL_HANDLE handle = NULL
 
char * err
 
voidaddr
 
ffi symbols = FFI_G(symbols)
 
ffi tags = FFI_G(tags)
 
zend_ffi_scopescope = NULL
 
ffi persistent = 1
 
zend_objecttype_obj = NULL
 
zend_ffi_typetype = type_ptr
 
zend_ffi_typetype_ptr = type = ctype->type
 
zend_ffi_cdatacdata = (zend_ffi_cdata*)zend_ffi_cdata_new(zend_ffi_cdata_ce)
 
voidptr = pemalloc(type->size, flags & ZEND_FFI_FLAG_PERSISTENT)
 
bool owned = 1
 
bool is_const = 0
 
bool is_static_call = Z_TYPE(EX(This)) != IS_OBJECT
 
zend_ffi_flags flags = ZEND_FFI_FLAG_OWNED
 
 else
 
zend_objectztype = NULL
 
zend_ffi_typeold_type = ZEND_FFI_TYPE(old_cdata->type)
 
zend_ffi_cdataold_cdata = (zend_ffi_cdata*)Z_OBJ_P(zv)
 
zvalzv
 
zvalarg = zv
 
cdata ptr_holder = old_cdata->ptr_holder
 
zend_ffi_dcl dcl = ZEND_FFI_ATTR_INIT
 
zend_stringtype_def
 
bool clean_symbols = FFI_G(symbols) == NULL
 
bool clean_tags = FFI_G(tags) == NULL
 
 ctype = (zend_ffi_ctype*)zend_ffi_ctype_new(zend_ffi_ctype_ce)
 
HashTabledims
 
zvalval
 
zend_ffi_cdatanew_cdata = (zend_ffi_cdata*)zend_ffi_cdata_new(zend_ffi_cdata_ce)
 
 new_type = emalloc(sizeof(zend_ffi_type))
 
new_type kind = ZEND_FFI_TYPE_POINTER
 
new_type attr = 0
 
new_type size = sizeof(void*)
 
new_type align = _Alignof(void*)
 
zend_ffi_cdatacdata1
 
zend_ffi_cdatacdata2
 
zend_ffi_typetype1 = ZEND_FFI_TYPE(cdata1->type)
 
zend_ffi_typetype2
 
voidptr1
 
voidptr2
 
int ret = memcmp(ptr1, ptr2, size)
 
zend_long ch
 
bool size_is_null = 1
 
zend_ffi_ctype_name_buf buf
 
buf start = buf.end = buf.buf + ((MAX_TYPE_NAME_LEN * 3) / 4)
 
zend_stringres = zend_string_init(buf.start, len, 0)
 
HashTableht = zend_new_array(zend_hash_num_elements(&type->record.fields))
 
zend_stringname
 
zend_long n
 
zend_module_entry ffi_module_entry
 

Macro Definition Documentation

◆ __BIGGEST_ALIGNMENT__

#define __BIGGEST_ALIGNMENT__   sizeof(size_t)

Definition at line 58 of file ffi.c.

◆ ATTR_ID

#define ATTR_ID ( name)
Value:
attr_ ## name,
zend_string * name

Definition at line 6838 of file ffi.c.

◆ ATTR_NAME

#define ATTR_NAME ( name)
Value:
{sizeof(#name)-1, #name},

Definition at line 6839 of file ffi.c.

◆ MAX_TYPE_NAME_LEN

#define MAX_TYPE_NAME_LEN   256

Definition at line 1503 of file ffi.c.

◆ SIMPLE_ATTRIBUTES

#define SIMPLE_ATTRIBUTES ( _)
Value:
_(cdecl) \
_(fastcall) \
_(thiscall) \
_(stdcall) \
_(ms_abi) \
_(sysv_abi) \
_(vectorcall) \
_(aligned) \
_(packed) \
_(ms_struct) \
_(gcc_struct) \
_(const) \
_(malloc) \
_(deprecated) \
_(nothrow) \
_(leaf) \
_(pure) \
_(noreturn) \
_(warn_unused_result)
_(string $message)

Definition at line 6817 of file ffi.c.

◆ VALUE_ATTRIBUTES

#define VALUE_ATTRIBUTES ( _)
Value:
_(regparam) \
_(aligned) \
_(mode) \
_(nonnull) \
_(alloc_size) \
_(format) \
_(deprecated)
char * mode

Definition at line 6915 of file ffi.c.

◆ zend_ffi_expr_bool

#define zend_ffi_expr_bool ( val)
Value:
do { \
if (val->kind == ZEND_FFI_VAL_UINT32 || val->kind == ZEND_FFI_VAL_UINT64) { \
val->i64 = !!val->u64; \
} else if (val->kind == ZEND_FFI_VAL_INT32 || val->kind == ZEND_FFI_VAL_INT64) { \
val->i64 = !!val->i64; \
} else if (val->kind == ZEND_FFI_VAL_FLOAT || val->kind == ZEND_FFI_VAL_DOUBLE || val->kind == ZEND_FFI_VAL_LONG_DOUBLE) { \
val->i64 = !!val->d; \
} else if (val->kind == ZEND_FFI_VAL_CHAR) { \
val->i64 = !!val->ch; \
} else { \
} \
} while (0)
zval * val
Definition ffi.c:4262
@ ZEND_FFI_VAL_FLOAT
Definition php_ffi.h:181
@ ZEND_FFI_VAL_INT32
Definition php_ffi.h:177
@ ZEND_FFI_VAL_LONG_DOUBLE
Definition php_ffi.h:183
@ ZEND_FFI_VAL_ERROR
Definition php_ffi.h:176
@ ZEND_FFI_VAL_UINT32
Definition php_ffi.h:179
@ ZEND_FFI_VAL_UINT64
Definition php_ffi.h:180
@ ZEND_FFI_VAL_INT64
Definition php_ffi.h:178
@ ZEND_FFI_VAL_DOUBLE
Definition php_ffi.h:182
@ ZEND_FFI_VAL_CHAR
Definition php_ffi.h:184

Definition at line 7153 of file ffi.c.

◆ zend_ffi_expr_cmp

#define zend_ffi_expr_cmp ( val,
op2,
OP )

Definition at line 7295 of file ffi.c.

◆ zend_ffi_expr_int_math

#define zend_ffi_expr_int_math ( val,
op2,
OP )

Definition at line 7237 of file ffi.c.

◆ zend_ffi_expr_math

#define zend_ffi_expr_math ( val,
op2,
OP )

Definition at line 7171 of file ffi.c.

◆ ZEND_FFI_SIZEOF_ARG

#define ZEND_FFI_SIZEOF_ARG    MAX(FFI_SIZEOF_ARG, sizeof(double))

Definition at line 188 of file ffi.c.

◆ ZEND_FFI_TYPE

#define ZEND_FFI_TYPE ( t)
Value:
((zend_ffi_type*)(((uintptr_t)(t)) & ~ZEND_FFI_TYPE_OWNED))
#define ZEND_FFI_TYPE_OWNED
Definition ffi.c:177
struct _zend_ffi_type zend_ffi_type
Definition php_ffi.h:29

Definition at line 179 of file ffi.c.

◆ ZEND_FFI_TYPE_IS_OWNED

#define ZEND_FFI_TYPE_IS_OWNED ( t)
Value:
(((uintptr_t)(t)) & ZEND_FFI_TYPE_OWNED)

Definition at line 182 of file ffi.c.

◆ ZEND_FFI_TYPE_MAKE_OWNED

#define ZEND_FFI_TYPE_MAKE_OWNED ( t)
Value:
((zend_ffi_type*)(((uintptr_t)(t)) | ZEND_FFI_TYPE_OWNED))

Definition at line 185 of file ffi.c.

◆ ZEND_FFI_TYPE_OWNED

#define ZEND_FFI_TYPE_OWNED   (1<<0)

Definition at line 177 of file ffi.c.

◆ ZEND_FFI_VALIDATE_API_RESTRICTION

ZEND_FFI_VALIDATE_API_RESTRICTION ( )
Value:
do { \
if (UNEXPECTED(!zend_ffi_validate_api_restriction(execute_data))) { \
RETURN_THROWS(); \
} \
} while (0)
#define UNEXPECTED(condition)
execute_data

Definition at line 3017 of file ffi.c.

Typedef Documentation

◆ zend_ffi

typedef struct _zend_ffi zend_ffi

◆ zend_ffi_cdata

◆ zend_ffi_cdata_iterator

◆ zend_ffi_ctype

◆ zend_ffi_ctype_name_buf

◆ zend_ffi_field

◆ zend_ffi_flags

◆ zend_ffi_scope

◆ zend_ffi_symbol

◆ zend_ffi_symbol_kind

◆ zend_ffi_tag

typedef struct _zend_ffi_tag zend_ffi_tag

◆ zend_ffi_tag_kind

◆ zend_ffi_type_kind

Enumeration Type Documentation

◆ _zend_ffi_flags

Enumerator
ZEND_FFI_FLAG_CONST 
ZEND_FFI_FLAG_OWNED 
ZEND_FFI_FLAG_PERSISTENT 

Definition at line 103 of file ffi.c.

◆ _zend_ffi_symbol_kind

Enumerator
ZEND_FFI_SYM_TYPE 
ZEND_FFI_SYM_CONST 
ZEND_FFI_SYM_VAR 
ZEND_FFI_SYM_FUNC 

Definition at line 147 of file ffi.c.

◆ _zend_ffi_tag_kind

Enumerator
ZEND_FFI_TAG_ENUM 
ZEND_FFI_TAG_STRUCT 
ZEND_FFI_TAG_UNION 

Definition at line 63 of file ffi.c.

◆ _zend_ffi_type_kind

Enumerator
ZEND_FFI_TYPE_VOID 
ZEND_FFI_TYPE_FLOAT 
ZEND_FFI_TYPE_DOUBLE 
ZEND_FFI_TYPE_UINT8 
ZEND_FFI_TYPE_SINT8 
ZEND_FFI_TYPE_UINT16 
ZEND_FFI_TYPE_SINT16 
ZEND_FFI_TYPE_UINT32 
ZEND_FFI_TYPE_SINT32 
ZEND_FFI_TYPE_UINT64 
ZEND_FFI_TYPE_SINT64 
ZEND_FFI_TYPE_ENUM 
ZEND_FFI_TYPE_BOOL 
ZEND_FFI_TYPE_CHAR 
ZEND_FFI_TYPE_POINTER 
ZEND_FFI_TYPE_FUNC 
ZEND_FFI_TYPE_ARRAY 
ZEND_FFI_TYPE_STRUCT 

Definition at line 77 of file ffi.c.

Function Documentation

◆ FFI_G() [1/3]

FFI_G ( default_type_attr )
pure virtual

◆ FFI_G() [2/3]

FFI_G ( symbols ) = NULL

◆ FFI_G() [3/3]

FFI_G ( tags ) = NULL

◆ if() [1/37]

else if ( ! cdata->flags &ZEND_FFI_FLAG_OWNED)

Definition at line 3956 of file ffi.c.

◆ if() [2/37]

if ( ! scope)

Definition at line 3624 of file ffi.c.

◆ if() [3/37]

if ( !type->func. args)

Definition at line 4992 of file ffi.c.

◆ if() [4/37]

if ( !zend_ffi_ctype_name(&, -> type)

Definition at line 4688 of file ffi.c.

◆ if() [5/37]

if ( CG(compiler_options) & ZEND_COMPILE_PRELOAD_IN_CHILD)

Definition at line 3596 of file ffi.c.

◆ if() [6/37]

if ( clean_symbols && FFI_Gsymbols)

Definition at line 4200 of file ffi.c.

◆ if() [7/37]

if ( clean_tags && FFI_Gtags)

Definition at line 4197 of file ffi.c.

◆ if() [8/37]

if ( code && ZSTR_LENcode)

Definition at line 3067 of file ffi.c.

◆ if() [9/37]

if ( ffi )

Definition at line 3603 of file ffi.c.

◆ if() [10/37]

if ( FFI_G(scopes) )

Definition at line 3620 of file ffi.c.

◆ if() [11/37]

if ( GC_REFCOUNT &-> std = = 1 && Z_REFCOUNT_P(arg) == 1 && type->kind == ZEND_FFI_TYPE_POINTER && cdata->ptr == &cdata->ptr_holder)

Definition at line 4356 of file ffi.c.

◆ if() [12/37]

if ( is_const )

Definition at line 3925 of file ffi.c.

◆ if() [13/37]

Definition at line 3829 of file ffi.c.

◆ if() [14/37]

if ( lib )

Definition at line 3039 of file ffi.c.

◆ if() [15/37]

if ( old_cdata->flags & ZEND_FFI_FLAG_OWNED)

Definition at line 4136 of file ffi.c.

◆ if() [16/37]

Definition at line 4108 of file ffi.c.

◆ if() [17/37]

if ( persistent )

Definition at line 3840 of file ffi.c.

◆ if() [18/37]

Definition at line 4126 of file ffi.c.

◆ if() [19/37]

if ( ret = = 0)

Definition at line 4564 of file ffi.c.

◆ if() [20/37]

else if ( type->attr & ZEND_FFI_ATTR_INCOMPLETE_TAG)

Definition at line 4282 of file ffi.c.

◆ if() [21/37]

if ( type->kind ! = ZEND_FFI_TYPE_POINTER && size,
type-> size )

Definition at line 4595 of file ffi.c.

◆ if() [22/37]

Definition at line 4668 of file ffi.c.

◆ if() [23/37]

if ( )

Definition at line 3919 of file ffi.c.

◆ if() [24/37]

else if ( type-> size,
old_type-> size )

Definition at line 4122 of file ffi.c.

◆ if() [25/37]

if ( type-> size = = 0)

Definition at line 3909 of file ffi.c.

◆ if() [26/37]

if ( type1->kind ! = ZEND_FFI_TYPE_POINTER && size,
type1-> size )

Definition at line 4465 of file ffi.c.

◆ if() [27/37]

if ( type1-> kind = ZEND_FFI_TYPE_POINTER)

Definition at line 4461 of file ffi.c.

◆ if() [28/37]

if ( type_def )

Definition at line 3844 of file ffi.c.

◆ if() [29/37]

if ( Z_TYPE_P(zv) ! = IS_OBJECT || Z_OBJCE_P(zv) != zend_ffi_cdata_ce)

Definition at line 4059 of file ffi.c.

◆ if() [30/37]

if ( Z_TYPE_P(zv) = IS_OBJECT && Z_OBJCE_P(zv) == zend_ffi_cdata_ce)

Definition at line 4228 of file ffi.c.

◆ if() [31/37]

if ( Z_TYPE_P(zv1) = IS_STRING)

Definition at line 4516 of file ffi.c.

◆ if() [32/37]

if ( Z_TYPE_P(zv2) = IS_STRING)

Definition at line 4472 of file ffi.c.

◆ if() [33/37]

Definition at line 4182 of file ffi.c.

◆ if() [34/37]

Definition at line 3945 of file ffi.c.

◆ if() [35/37]

Definition at line 4287 of file ffi.c.

◆ if() [36/37]

Definition at line 3896 of file ffi.c.

◆ if() [37/37]

Definition at line 4681 of file ffi.c.

◆ memcpy()

memcpy ( ptr1 ,
ptr2 ,
size  )

◆ memset() [1/2]

memset ( ptr ,
0 ,
type-> size )

◆ memset() [2/2]

memset ( ptr ,
ch ,
size  )

◆ RETURN_LONG() [1/6]

RETURN_LONG ( ptr-> offset)

◆ RETURN_LONG() [2/6]

RETURN_LONG ( type->array. length)

◆ RETURN_LONG() [3/6]

RETURN_LONG ( type->enumeration. kind)

◆ RETURN_LONG() [4/6]

RETURN_LONG ( type->func. abi)

◆ RETURN_LONG() [5/6]

RETURN_LONG ( type->func.args ? zend_hash_num_elements(type->func.args) :0 )

◆ RETURN_LONG() [6/6]

RETURN_LONG ( type-> size)

◆ RETURN_STR()

RETURN_STR ( res )

◆ RETURN_THROWS()

RETURN_THROWS ( )

◆ RETVAL_ARR()

RETVAL_ARR ( ht )

◆ Z_PARAM_OBJECT_OF_CLASS_EX() [1/2]

Z_PARAM_OBJECT_OF_CLASS_EX ( zv ,
zend_ffi_cdata_ce ,
0 ,
1  )

◆ Z_PARAM_OBJECT_OF_CLASS_EX() [2/2]

Z_PARAM_OBJECT_OF_CLASS_EX ( zv1 ,
zend_ffi_cdata_ce ,
0 ,
1  )

◆ Z_PARAM_STR()

Z_PARAM_STR ( type_def )

◆ Z_PARAM_ZVAL() [1/3]

Z_PARAM_ZVAL ( zv )

◆ Z_PARAM_ZVAL() [2/3]

Z_PARAM_ZVAL ( zv1 )

◆ Z_PARAM_ZVAL() [3/3]

Z_PARAM_ZVAL ( zv2 )

◆ 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_parser_error()

void zend_ffi_parser_error ( const char * format,
... )

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.

◆ ZEND_HASH_FOREACH_END()

ZEND_HASH_FOREACH_END ( )

◆ zend_hash_next_index_insert_new()

zend_hash_next_index_insert_new ( ht ,
& zv )

◆ ZEND_HASH_REVERSE_FOREACH_VAL()

ZEND_HASH_REVERSE_FOREACH_VAL ( dims ,
val  )

Definition at line 4299 of file ffi.c.

◆ ZEND_MINFO_FUNCTION()

ZEND_MINFO_FUNCTION ( ffi )

Definition at line 5631 of file ffi.c.

◆ ZEND_MINIT_FUNCTION()

ZEND_MINIT_FUNCTION ( ffi )

Definition at line 5455 of file ffi.c.

◆ ZEND_PARSE_PARAMETERS_END()

Z_PARAM_OPTIONAL ZEND_PARSE_PARAMETERS_END ( )

◆ ZEND_RSHUTDOWN_FUNCTION()

ZEND_RSHUTDOWN_FUNCTION ( ffi )

Definition at line 5611 of file ffi.c.

◆ ZVAL_DEREF() [1/3]

ZVAL_DEREF ( zv )

◆ ZVAL_DEREF() [2/3]

ZVAL_DEREF ( zv1 )

◆ ZVAL_DEREF() [3/3]

ZVAL_DEREF ( zv2 )

Variable Documentation

◆ addr

void* addr

Definition at line 3030 of file ffi.c.

◆ align

new_type align = _Alignof(void*)

Definition at line 4366 of file ffi.c.

◆ arg

zval * arg = zv

Definition at line 3975 of file ffi.c.

◆ attr

new_type attr = 0

Definition at line 4364 of file ffi.c.

◆ buf

smart_str_0 & buf

Definition at line 4685 of file ffi.c.

◆ cdata

zend_ffi_cdata * cdata = (zend_ffi_cdata*)zend_ffi_cdata_new(zend_ffi_cdata_ce)

Definition at line 3813 of file ffi.c.

◆ cdata1

zend_ffi_cdata * cdata1
Initial value:
{
zval *zv1, *zv2
struct _zval_struct zval

Definition at line 4447 of file ffi.c.

◆ cdata2

zend_ffi_cdata * cdata2

Definition at line 4447 of file ffi.c.

◆ ch

Definition at line 4580 of file ffi.c.

◆ clean_symbols

bool clean_symbols = FFI_G(symbols) == NULL

Definition at line 4177 of file ffi.c.

◆ clean_tags

bool clean_tags = FFI_G(tags) == NULL

Definition at line 4178 of file ffi.c.

◆ ctype

RETURN_OBJ & ctype = (zend_ffi_ctype*)zend_ffi_ctype_new(zend_ffi_ctype_ce)

Definition at line 4208 of file ffi.c.

◆ dcl

Definition at line 4153 of file ffi.c.

◆ dims

HashTable* dims

Definition at line 4261 of file ffi.c.

◆ else

else
Initial value:
{
zend_object * type_obj
Definition ffi.c:3811
ctype
Definition ffi.c:4208
struct _zend_ffi_ctype zend_ffi_ctype

Definition at line 3892 of file ffi.c.

◆ err

char* err

Definition at line 3029 of file ffi.c.

◆ ffi

RETURN_OBJ & ffi = NULL

Definition at line 3027 of file ffi.c.

◆ ffi_module_entry

zend_module_entry ffi_module_entry
Initial value:
= {
"FFI",
NULL,
NULL,
NULL,
}
zend_ffi * ffi
Definition ffi.c:3027
#define NULL
Definition gdcache.h:45
#define PHP_VERSION
Definition php_version.h:7
#define ZEND_MINIT
Definition zend_API.h:1066
#define ZEND_MINFO
Definition zend_API.h:1070
#define ZEND_RSHUTDOWN
Definition zend_API.h:1069
#define ZEND_GSHUTDOWN(module)
Definition zend_API.h:1072
#define ZEND_GINIT(module)
Definition zend_API.h:1071
#define STANDARD_MODULE_HEADER
#define ZEND_MODULE_GLOBALS(module_name)
#define STANDARD_MODULE_PROPERTIES_EX

Definition at line 5733 of file ffi.c.

◆ flags

Definition at line 3819 of file ffi.c.

◆ handle

DL_HANDLE handle = NULL

Definition at line 3028 of file ffi.c.

◆ ht

ht = zend_new_array(zend_hash_num_elements(&type->record.fields))

Definition at line 4838 of file ffi.c.

◆ is_const

bool is_const = 0

Definition at line 3817 of file ffi.c.

◆ is_static_call

bool is_static_call = Z_TYPE(EX(This)) != IS_OBJECT

Definition at line 3818 of file ffi.c.

◆ kind

Definition at line 4363 of file ffi.c.

◆ lib

ffi lib = NULL

Definition at line 3026 of file ffi.c.

◆ n


*

Definition at line 4979 of file ffi.c.

◆ name

const char* name

Definition at line 4839 of file ffi.c.

◆ new_cdata

RETURN_OBJ & new_cdata = (zend_ffi_cdata*)zend_ffi_cdata_new(zend_ffi_cdata_ce)

Definition at line 4338 of file ffi.c.

◆ new_type

Definition at line 4362 of file ffi.c.

◆ old_cdata

old_cdata = (zend_ffi_cdata*)Z_OBJ_P(zv)

Definition at line 3972 of file ffi.c.

◆ old_type

Definition at line 3971 of file ffi.c.

◆ owned

bool owned = 1

Definition at line 3815 of file ffi.c.

◆ persistent

bool persistent = 1

Definition at line 3633 of file ffi.c.

◆ ptr

Definition at line 3814 of file ffi.c.

◆ ptr1

void * ptr1

Definition at line 4449 of file ffi.c.

◆ ptr2

void * ptr2

Definition at line 4449 of file ffi.c.

◆ ptr_holder

new_cdata ptr_holder = old_cdata->ptr_holder

Definition at line 4130 of file ffi.c.

◆ res

int64_t res = zend_string_init(buf.start, len, 0)

Definition at line 4692 of file ffi.c.

◆ ret

RETURN_OBJ& ret = memcmp(ptr1, ptr2, size)

Definition at line 4506 of file ffi.c.

◆ scope

zend_ffi_scope* scope = NULL

Definition at line 3612 of file ffi.c.

◆ size

zend_long size = sizeof(void*)

Definition at line 4365 of file ffi.c.

◆ size_is_null

bool size_is_null = 1

Definition at line 4612 of file ffi.c.

◆ start

buf start = buf.end = buf.buf + ((MAX_TYPE_NAME_LEN * 3) / 4)

Definition at line 4687 of file ffi.c.

◆ symbols

ffi symbols = FFI_G(symbols)

Definition at line 3114 of file ffi.c.

◆ tags

ffi tags = FFI_G(tags)

Definition at line 3115 of file ffi.c.

◆ type

ret type = type_ptr

Definition at line 3812 of file ffi.c.

◆ type1

Definition at line 4448 of file ffi.c.

◆ type2

zend_ffi_type * type2

Definition at line 4448 of file ffi.c.

◆ type_def

zend_string* type_def

Definition at line 4154 of file ffi.c.

◆ type_obj

zend_object* type_obj = NULL

Definition at line 3811 of file ffi.c.

◆ type_ptr

zend_ffi_type * type_ptr = type = ctype->type

Definition at line 3812 of file ffi.c.

◆ val

zval* val

Definition at line 4262 of file ffi.c.

◆ ztype

zend_object* ztype = NULL

Definition at line 3970 of file ffi.c.

◆ zv

zval zv

Definition at line 3975 of file ffi.c.