php-src/ext/ffi/tests/utils.inc
Christoph M. Becker 280485adc1 Improve FFI test suite for Windows
We add Windows support to four existing test cases, extract some useful
utility functions, and use them to simplify further test cases.

We also remove the Windows specific code from preload.inc, since
preloading isn't supported on Windows anyway.
2020-03-18 16:53:06 +01:00

30 lines
711 B
PHP

<?php
function ffi_cdef($code, $lib)
{
if (isset($lib)) {
return FFI::cdef($code, $lib);
} else {
return FFI::cdef($code);
}
}
function ffi_get_php_dll_name()
{
if (PHP_OS_FAMILY === 'Windows') {
return "php" . PHP_MAJOR_VERSION . (PHP_ZTS ? "ts" : "") . (PHP_DEBUG ? "_debug" : "") . ".dll";
} else {
return null;
}
}
function ffi_get_fastcall_specifier()
{
foreach (['__attribute__((fastcall))', '__fastcall', '__vectorcall'] as $spec) {
try {
ffi_cdef("extern size_t $spec zend_list_insert(void *ptr, int type);", ffi_get_php_dll_name());
return "$spec ";
} catch (Throwable $e) {}
}
return "";
}