From: Christoph M. Becker Date: Mon, 26 Aug 2019 13:22:33 +0000 (+0200) Subject: Add ext/ffi stubs X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e047e9d8939d77484a5d9eac5611622597a3d189;p=php Add ext/ffi stubs --- diff --git a/ext/ffi/ffi.c b/ext/ffi/ffi.c index 9812811244..7d38281b03 100644 --- a/ext/ffi/ffi.c +++ b/ext/ffi/ffi.c @@ -28,6 +28,7 @@ #include "zend_interfaces.h" #include "zend_closures.h" #include "main/SAPI.h" +#include "ffi_arginfo.h" #include @@ -4323,99 +4324,23 @@ ZEND_METHOD(FFI, string) /* {{{ */ } /* }}} */ -ZEND_BEGIN_ARG_INFO_EX(arginfo_func_cdef, 0, 0, 0) - ZEND_ARG_INFO(0, code) - ZEND_ARG_INFO(0, lib) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_func_load, 0, 0, 1) - ZEND_ARG_INFO(0, filename) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_func_scope, 0, 0, 1) - ZEND_ARG_INFO(0, scope_name) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_func_new, 0, 0, 1) - ZEND_ARG_INFO(0, type) - ZEND_ARG_INFO(0, owned) - ZEND_ARG_INFO(0, persistent) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_func_free, 0, 0, 1) - ZEND_ARG_INFO(ZEND_SEND_PREFER_REF, ptr) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_func_cast, 0, 0, 2) - ZEND_ARG_INFO(0, type) - ZEND_ARG_INFO(ZEND_SEND_PREFER_REF, ptr) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_func_type, 0, 0, 1) - ZEND_ARG_INFO(0, type) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_func_typeof, 0, 0, 1) - ZEND_ARG_INFO(ZEND_SEND_PREFER_REF, ptr) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_func_array, 0, 0, 2) - ZEND_ARG_INFO(0, type) - ZEND_ARG_INFO(0, dims) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_func_addr, 0, 0, 1) - ZEND_ARG_INFO(ZEND_SEND_PREFER_REF, ptr) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_func_sizeof, 0, 0, 1) - ZEND_ARG_INFO(ZEND_SEND_PREFER_REF, ptr) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_func_alignof, 0, 0, 1) - ZEND_ARG_INFO(ZEND_SEND_PREFER_REF, ptr) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_func_memcpy, 0, 0, 3) - ZEND_ARG_INFO(ZEND_SEND_PREFER_REF, dst) - ZEND_ARG_INFO(ZEND_SEND_PREFER_REF, src) - ZEND_ARG_INFO(0, size) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_func_memcmp, 0, 0, 3) - ZEND_ARG_INFO(ZEND_SEND_PREFER_REF, ptr1) - ZEND_ARG_INFO(ZEND_SEND_PREFER_REF, ptr2) - ZEND_ARG_INFO(0, size) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_func_memset, 0, 0, 3) - ZEND_ARG_INFO(ZEND_SEND_PREFER_REF, ptr) - ZEND_ARG_INFO(0, ch) - ZEND_ARG_INFO(0, size) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_func_string, 0, 0, 1) - ZEND_ARG_INFO(ZEND_SEND_PREFER_REF, ptr) - ZEND_ARG_INFO(0, size) -ZEND_END_ARG_INFO() - static const zend_function_entry zend_ffi_functions[] = { - ZEND_ME(FFI, cdef, arginfo_func_cdef, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC) - ZEND_ME(FFI, load, arginfo_func_load, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC) - ZEND_ME(FFI, scope, arginfo_func_scope, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC) - ZEND_ME(FFI, new, arginfo_func_new, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC) - ZEND_ME(FFI, free, arginfo_func_free, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC) - ZEND_ME(FFI, cast, arginfo_func_cast, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC) - ZEND_ME(FFI, type, arginfo_func_type, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC) - ZEND_ME(FFI, typeof, arginfo_func_typeof, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC) - ZEND_ME(FFI, arrayType, arginfo_func_array, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC) - ZEND_ME(FFI, addr, arginfo_func_addr, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC) - ZEND_ME(FFI, sizeof, arginfo_func_sizeof, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC) - ZEND_ME(FFI, alignof, arginfo_func_alignof, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC) - ZEND_ME(FFI, memcpy, arginfo_func_memcpy, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC) - ZEND_ME(FFI, memcmp, arginfo_func_memcmp, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC) - ZEND_ME(FFI, memset, arginfo_func_memset, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC) - ZEND_ME(FFI, string, arginfo_func_string, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC) + ZEND_ME(FFI, cdef, arginfo_class_FFI_cdef, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC) + ZEND_ME(FFI, load, arginfo_class_FFI_load, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC) + ZEND_ME(FFI, scope, arginfo_class_FFI_scope, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC) + ZEND_ME(FFI, new, arginfo_class_FFI_new, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC) + ZEND_ME(FFI, free, arginfo_class_FFI_free, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC) + ZEND_ME(FFI, cast, arginfo_class_FFI_cast, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC) + ZEND_ME(FFI, type, arginfo_class_FFI_type, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC) + ZEND_ME(FFI, typeof, arginfo_class_FFI_typeof, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC) + ZEND_ME(FFI, arrayType, arginfo_class_FFI_arrayType, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC) + ZEND_ME(FFI, addr, arginfo_class_FFI_addr, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC) + ZEND_ME(FFI, sizeof, arginfo_class_FFI_sizeof, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC) + ZEND_ME(FFI, alignof, arginfo_class_FFI_alignof, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC) + ZEND_ME(FFI, memcpy, arginfo_class_FFI_memcpy, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC) + ZEND_ME(FFI, memcmp, arginfo_class_FFI_memcmp, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC) + ZEND_ME(FFI, memset, arginfo_class_FFI_memset, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC) + ZEND_ME(FFI, string, arginfo_class_FFI_string, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC) ZEND_FE_END }; diff --git a/ext/ffi/ffi.stub.php b/ext/ffi/ffi.stub.php new file mode 100644 index 0000000000..c315c55a1c --- /dev/null +++ b/ext/ffi/ffi.stub.php @@ -0,0 +1,91 @@ +