Generate function entries from stubs

If @generate-function-entries is specified in the stub file,
also generate function entries for the extension.

Currently limited to free functions only.
This commit is contained in:
Nikita Popov 2020-02-21 15:08:56 +01:00
parent 305b17e85f
commit 51bc6233b2
4 changed files with 1505 additions and 765 deletions

193
build/gen_stub.php Executable file → Normal file
View file

@ -1,6 +1,7 @@
#!/usr/bin/env php
<?php declare(strict_types=1);
use PhpParser\Comment\Doc as DocComment;
use PhpParser\Node;
use PhpParser\Node\Expr;
use PhpParser\Node\Stmt;
@ -46,8 +47,8 @@ function processStubFile(string $stubFile) {
$arginfoFile = str_replace('.stub.php', '', $stubFile) . '_arginfo.h';
try {
$funcInfos = parseStubFile($stubFile);
$arginfoCode = generateArgInfoCode($funcInfos);
$fileInfo = parseStubFile($stubFile);
$arginfoCode = generateArgInfoCode($fileInfo);
file_put_contents($arginfoFile, $arginfoCode);
} catch (Exception $e) {
echo "In $stubFile:\n{$e->getMessage()}\n";
@ -299,6 +300,10 @@ class ReturnInfo {
class FuncInfo {
/** @var string */
public $name;
/** @var ?string */
public $className;
/** @var ?string */
public $alias;
/** @var ArgInfo[] */
public $args;
/** @var ReturnInfo */
@ -309,9 +314,12 @@ class FuncInfo {
public $cond;
public function __construct(
string $name, array $args, ReturnInfo $return, int $numRequiredArgs, ?string $cond
string $name, ?string $className, ?string $alias, array $args, ReturnInfo $return,
int $numRequiredArgs, ?string $cond
) {
$this->name = $name;
$this->className = $className;
$this->alias = $alias;
$this->args = $args;
$this->return = $return;
$this->numRequiredArgs = $numRequiredArgs;
@ -333,11 +341,33 @@ class FuncInfo {
&& $this->numRequiredArgs === $other->numRequiredArgs
&& $this->cond === $other->cond;
}
public function getArgInfoName(): string {
if ($this->className) {
return 'arginfo_class_' . $this->className . '_' . $this->name;
}
return 'arginfo_' . $this->name;
}
}
function parseFunctionLike(string $name, Node\FunctionLike $func, ?string $cond): FuncInfo {
class FileInfo {
/** @var FuncInfo[] */
public $funcInfos;
/** @var bool */
public $generateFunctionEntries;
public function __construct(array $funcInfos, bool $generateFunctionEntries) {
$this->funcInfos = $funcInfos;
$this->generateFunctionEntries = $generateFunctionEntries;
}
}
function parseFunctionLike(
string $name, ?string $className, Node\FunctionLike $func, ?string $cond
): FuncInfo {
$comment = $func->getDocComment();
$paramMeta = [];
$alias = null;
if ($comment) {
$commentText = substr($comment->getText(), 2, -2);
@ -349,6 +379,8 @@ function parseFunctionLike(string $name, Node\FunctionLike $func, ?string $cond)
$paramMeta[$varName] = [];
}
$paramMeta[$varName]['preferRef'] = true;
} else if (preg_match('/^\*\s*@alias\s+(.+)$/', trim($commentLine), $matches)) {
$alias = $matches[1];
}
}
}
@ -403,7 +435,7 @@ function parseFunctionLike(string $name, Node\FunctionLike $func, ?string $cond)
$return = new ReturnInfo(
$func->returnsByRef(),
$returnType ? Type::fromNode($returnType) : null);
return new FuncInfo($name, $args, $return, $numRequiredArgs, $cond);
return new FuncInfo($name, $className, $alias, $args, $return, $numRequiredArgs, $cond);
}
function handlePreprocessorConditions(array &$conds, Stmt $stmt): ?string {
@ -434,8 +466,24 @@ function handlePreprocessorConditions(array &$conds, Stmt $stmt): ?string {
return empty($conds) ? null : implode(' && ', $conds);
}
/** @return FuncInfo[] */
function parseStubFile(string $fileName) {
function getFileDocComment(array $stmts): ?DocComment {
if (empty($stmts)) {
return null;
}
$comments = $stmts[0]->getComments();
if (empty($comments)) {
return null;
}
if ($comments[0] instanceof DocComment) {
return $comments[0];
}
return null;
}
function parseStubFile(string $fileName): FileInfo {
if (!file_exists($fileName)) {
throw new Exception("File $fileName does not exist");
}
@ -450,6 +498,14 @@ function parseStubFile(string $fileName) {
$stmts = $parser->parse($code);
$nodeTraverser->traverse($stmts);
$generateFunctionEntries = false;
$fileDocComment = getFileDocComment($stmts);
if ($fileDocComment) {
if (strpos($fileDocComment->getText(), '@generate-function-entries') !== false) {
$generateFunctionEntries = true;
}
}
$funcInfos = [];
$conds = [];
foreach ($stmts as $stmt) {
@ -459,7 +515,7 @@ function parseStubFile(string $fileName) {
}
if ($stmt instanceof Stmt\Function_) {
$funcInfos[] = parseFunctionLike($stmt->name->toString(), $stmt, $cond);
$funcInfos[] = parseFunctionLike($stmt->name->toString(), null, $stmt, $cond);
continue;
}
@ -476,7 +532,7 @@ function parseStubFile(string $fileName) {
}
$funcInfos[] = parseFunctionLike(
'class_' . $className . '_' . $classStmt->name->toString(), $classStmt, $cond);
$classStmt->name->toString(), $className, $classStmt, $cond);
}
continue;
}
@ -484,7 +540,7 @@ function parseStubFile(string $fileName) {
throw new Exception("Unexpected node {$stmt->getType()}");
}
return $funcInfos;
return new FileInfo($funcInfos, $generateFunctionEntries);
}
function funcInfoToCode(FuncInfo $funcInfo): string {
@ -494,28 +550,32 @@ function funcInfoToCode(FuncInfo $funcInfo): string {
if (null !== $simpleReturnType = $returnType->tryToSimpleType()) {
if ($simpleReturnType->isBuiltin) {
$code .= sprintf(
"ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_%s, %d, %d, %s, %d)\n",
$funcInfo->name, $funcInfo->return->byRef, $funcInfo->numRequiredArgs,
"ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(%s, %d, %d, %s, %d)\n",
$funcInfo->getArgInfoName(), $funcInfo->return->byRef,
$funcInfo->numRequiredArgs,
$simpleReturnType->toTypeCode(), $returnType->isNullable()
);
} else {
$code .= sprintf(
"ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_%s, %d, %d, %s, %d)\n",
$funcInfo->name, $funcInfo->return->byRef, $funcInfo->numRequiredArgs,
"ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(%s, %d, %d, %s, %d)\n",
$funcInfo->getArgInfoName(), $funcInfo->return->byRef,
$funcInfo->numRequiredArgs,
$simpleReturnType->toEscapedName(), $returnType->isNullable()
);
}
} else if (null !== $representableType = $returnType->tryToRepresentableType()) {
if ($representableType->classType !== null) {
$code .= sprintf(
"ZEND_BEGIN_ARG_WITH_RETURN_OBJ_TYPE_MASK_EX(arginfo_%s, %d, %d, %s, %s)\n",
$funcInfo->name, $funcInfo->return->byRef, $funcInfo->numRequiredArgs,
"ZEND_BEGIN_ARG_WITH_RETURN_OBJ_TYPE_MASK_EX(%s, %d, %d, %s, %s)\n",
$funcInfo->getArgInfoName(), $funcInfo->return->byRef,
$funcInfo->numRequiredArgs,
$representableType->classType->toEscapedName(), $representableType->toTypeMask()
);
} else {
$code .= sprintf(
"ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_%s, %d, %d, %s)\n",
$funcInfo->name, $funcInfo->return->byRef, $funcInfo->numRequiredArgs,
"ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(%s, %d, %d, %s)\n",
$funcInfo->getArgInfoName(), $funcInfo->return->byRef,
$funcInfo->numRequiredArgs,
$representableType->toTypeMask()
);
}
@ -524,8 +584,8 @@ function funcInfoToCode(FuncInfo $funcInfo): string {
}
} else {
$code .= sprintf(
"ZEND_BEGIN_ARG_INFO_EX(arginfo_%s, 0, %d, %d)\n",
$funcInfo->name, $funcInfo->return->byRef, $funcInfo->numRequiredArgs
"ZEND_BEGIN_ARG_INFO_EX(%s, 0, %d, %d)\n",
$funcInfo->getArgInfoName(), $funcInfo->return->byRef, $funcInfo->numRequiredArgs
);
}
@ -566,7 +626,7 @@ function funcInfoToCode(FuncInfo $funcInfo): string {
}
$code .= "ZEND_END_ARG_INFO()";
return $code;
return $code . "\n";
}
function findEquivalentFuncInfo(array $generatedFuncInfos, $funcInfo): ?FuncInfo {
@ -578,33 +638,80 @@ function findEquivalentFuncInfo(array $generatedFuncInfos, $funcInfo): ?FuncInfo
return null;
}
/** @param FuncInfo[] $funcInfos */
function generateArginfoCode(array $funcInfos): string {
$code = "/* This is a generated file, edit the .stub.php file instead. */";
$generatedFuncInfos = [];
foreach ($funcInfos as $funcInfo) {
$code .= "\n\n";
function generateCodeWithConditions(
FileInfo $fileInfo, string $separator, Closure $codeGenerator): string {
$code = "";
foreach ($fileInfo->funcInfos as $funcInfo) {
$funcCode = $codeGenerator($funcInfo);
if ($funcCode === null) {
continue;
}
$code .= $separator;
if ($funcInfo->cond) {
$code .= "#if {$funcInfo->cond}\n";
}
/* If there already is an equivalent arginfo structure, only emit a #define */
if ($generatedFuncInfo = findEquivalentFuncInfo($generatedFuncInfos, $funcInfo)) {
$code .= sprintf(
"#define arginfo_%s arginfo_%s",
$funcInfo->name, $generatedFuncInfo->name
);
$code .= $funcCode;
$code .= "#endif\n";
} else {
$code .= funcInfoToCode($funcInfo);
$code .= $funcCode;
}
if ($funcInfo->cond) {
$code .= "\n#endif";
}
$generatedFuncInfos[] = $funcInfo;
}
return $code . "\n";
return $code;
}
function generateArgInfoCode(FileInfo $fileInfo): string {
$funcInfos = $fileInfo->funcInfos;
$code = "/* This is a generated file, edit the .stub.php file instead. */\n";
$generatedFuncInfos = [];
$code .= generateCodeWithConditions(
$fileInfo, "\n",
function(FuncInfo $funcInfo) use(&$generatedFuncInfos) {
/* If there already is an equivalent arginfo structure, only emit a #define */
if ($generatedFuncInfo = findEquivalentFuncInfo($generatedFuncInfos, $funcInfo)) {
$code = sprintf(
"#define %s %s\n",
$funcInfo->getArgInfoName(), $generatedFuncInfo->getArgInfoName()
);
} else {
$code = funcInfoToCode($funcInfo);
}
$generatedFuncInfos[] = $funcInfo;
return $code;
}
);
if ($fileInfo->generateFunctionEntries) {
$code .= "\n\n";
$code .= generateCodeWithConditions($fileInfo, "", function(FuncInfo $funcInfo) {
if ($funcInfo->className || $funcInfo->alias) {
return null;
}
return "ZEND_FUNCTION($funcInfo->name);\n";
});
$code .= "\n\nstatic const zend_function_entry ext_functions[] = {\n";
$code .= generateCodeWithConditions($fileInfo, "", function(FuncInfo $funcInfo) {
if ($funcInfo->className) {
return null;
}
if ($funcInfo->alias) {
return sprintf(
"\tZEND_FALIAS(%s, %s, %s)\n",
$funcInfo->name, $funcInfo->alias, $funcInfo->getArgInfoName()
);
} else {
return sprintf("\tZEND_FE(%s, %s)\n", $funcInfo->name, $funcInfo->getArgInfoName());
}
});
$code .= "\tZEND_FE_END\n";
$code .= "};\n";
}
return $code;
}
function initPhpParser() {

View file

@ -33,7 +33,6 @@
#include "ext/standard/php_dns.h"
#include "ext/standard/php_uuencode.h"
#include "ext/standard/php_mt_rand.h"
#include "basic_functions_arginfo.h"
#ifdef PHP_WIN32
#include "win32/php_win32_globals.h"
@ -107,6 +106,7 @@ PHPAPI php_basic_globals basic_globals;
#include "php_fopen_wrappers.h"
#include "streamsfuncs.h"
#include "basic_functions_arginfo.h"
static zend_class_entry *incomplete_class_entry = NULL;
@ -120,711 +120,6 @@ typedef struct _user_tick_function_entry {
static void user_shutdown_function_dtor(zval *zv);
static void user_tick_function_dtor(user_tick_function_entry *tick_function_entry);
/* {{{ arginfo */
static const zend_function_entry basic_functions[] = { /* {{{ */
PHP_FE(constant, arginfo_constant)
PHP_FE(bin2hex, arginfo_bin2hex)
PHP_FE(hex2bin, arginfo_hex2bin)
PHP_FE(sleep, arginfo_sleep)
PHP_FE(usleep, arginfo_usleep)
#if HAVE_NANOSLEEP
PHP_FE(time_nanosleep, arginfo_time_nanosleep)
PHP_FE(time_sleep_until, arginfo_time_sleep_until)
#endif
#if HAVE_STRPTIME
PHP_FE(strptime, arginfo_strptime)
#endif
PHP_FE(flush, arginfo_flush)
PHP_FE(wordwrap, arginfo_wordwrap)
PHP_FE(htmlspecialchars, arginfo_htmlspecialchars)
PHP_FE(htmlentities, arginfo_htmlentities)
PHP_FE(html_entity_decode, arginfo_html_entity_decode)
PHP_FE(htmlspecialchars_decode, arginfo_htmlspecialchars_decode)
PHP_FE(get_html_translation_table, arginfo_get_html_translation_table)
PHP_FE(sha1, arginfo_sha1)
PHP_FE(sha1_file, arginfo_sha1_file)
PHP_FE(md5, arginfo_md5)
PHP_FE(md5_file, arginfo_md5_file)
PHP_FE(crc32, arginfo_crc32)
PHP_FE(iptcparse, arginfo_iptcparse)
PHP_FE(iptcembed, arginfo_iptcembed)
PHP_FE(getimagesize, arginfo_getimagesize)
PHP_FE(getimagesizefromstring, arginfo_getimagesizefromstring)
PHP_FE(image_type_to_mime_type, arginfo_image_type_to_mime_type)
PHP_FE(image_type_to_extension, arginfo_image_type_to_extension)
PHP_FE(phpinfo, arginfo_phpinfo)
PHP_FE(phpversion, arginfo_phpversion)
PHP_FE(phpcredits, arginfo_phpcredits)
PHP_FE(php_sapi_name, arginfo_php_sapi_name)
PHP_FE(php_uname, arginfo_php_uname)
PHP_FE(php_ini_scanned_files, arginfo_php_ini_scanned_files)
PHP_FE(php_ini_loaded_file, arginfo_php_ini_loaded_file)
PHP_FE(strnatcmp, arginfo_strnatcmp)
PHP_FE(strnatcasecmp, arginfo_strnatcasecmp)
PHP_FE(substr_count, arginfo_substr_count)
PHP_FE(strspn, arginfo_strspn)
PHP_FE(strcspn, arginfo_strcspn)
PHP_FE(strtok, arginfo_strtok)
PHP_FE(strtoupper, arginfo_strtoupper)
PHP_FE(strtolower, arginfo_strtolower)
PHP_FE(str_contains, arginfo_str_contains)
PHP_FE(strpos, arginfo_strpos)
PHP_FE(stripos, arginfo_stripos)
PHP_FE(strrpos, arginfo_strrpos)
PHP_FE(strripos, arginfo_strripos)
PHP_FE(strrev, arginfo_strrev)
PHP_FE(hebrev, arginfo_hebrev)
PHP_FE(nl2br, arginfo_nl2br)
PHP_FE(basename, arginfo_basename)
PHP_FE(dirname, arginfo_dirname)
PHP_FE(pathinfo, arginfo_pathinfo)
PHP_FE(stripslashes, arginfo_stripslashes)
PHP_FE(stripcslashes, arginfo_stripcslashes)
PHP_FE(strstr, arginfo_strstr)
PHP_FE(stristr, arginfo_stristr)
PHP_FE(strrchr, arginfo_strrchr)
PHP_FE(str_shuffle, arginfo_str_shuffle)
PHP_FE(str_word_count, arginfo_str_word_count)
PHP_FE(str_split, arginfo_str_split)
PHP_FE(strpbrk, arginfo_strpbrk)
PHP_FE(substr_compare, arginfo_substr_compare)
PHP_FE(utf8_encode, arginfo_utf8_encode)
PHP_FE(utf8_decode, arginfo_utf8_decode)
PHP_FE(strcoll, arginfo_strcoll)
PHP_FE(substr, arginfo_substr)
PHP_FE(substr_replace, arginfo_substr_replace)
PHP_FE(quotemeta, arginfo_quotemeta)
PHP_FE(ucfirst, arginfo_ucfirst)
PHP_FE(lcfirst, arginfo_lcfirst)
PHP_FE(ucwords, arginfo_ucwords)
PHP_FE(strtr, arginfo_strtr)
PHP_FE(addslashes, arginfo_addslashes)
PHP_FE(addcslashes, arginfo_addcslashes)
PHP_FE(rtrim, arginfo_rtrim)
PHP_FE(str_replace, arginfo_str_replace)
PHP_FE(str_ireplace, arginfo_str_ireplace)
PHP_FE(str_repeat, arginfo_str_repeat)
PHP_FE(count_chars, arginfo_count_chars)
PHP_FE(chunk_split, arginfo_chunk_split)
PHP_FE(trim, arginfo_trim)
PHP_FE(ltrim, arginfo_ltrim)
PHP_FE(strip_tags, arginfo_strip_tags)
PHP_FE(similar_text, arginfo_similar_text)
PHP_FE(explode, arginfo_explode)
PHP_FE(implode, arginfo_implode)
PHP_FALIAS(join, implode, arginfo_join)
PHP_FE(setlocale, arginfo_setlocale)
PHP_FE(localeconv, arginfo_localeconv)
#if HAVE_NL_LANGINFO
PHP_FE(nl_langinfo, arginfo_nl_langinfo)
#endif
PHP_FE(soundex, arginfo_soundex)
PHP_FE(levenshtein, arginfo_levenshtein)
PHP_FE(chr, arginfo_chr)
PHP_FE(ord, arginfo_ord)
PHP_FE(parse_str, arginfo_parse_str)
PHP_FE(str_getcsv, arginfo_str_getcsv)
PHP_FE(str_pad, arginfo_str_pad)
PHP_FALIAS(chop, rtrim, arginfo_chop)
PHP_FALIAS(strchr, strstr, arginfo_strchr)
PHP_FE(sprintf, arginfo_sprintf)
PHP_FE(printf, arginfo_printf)
PHP_FE(vprintf, arginfo_vprintf)
PHP_FE(vsprintf, arginfo_vsprintf)
PHP_FE(fprintf, arginfo_fprintf)
PHP_FE(vfprintf, arginfo_vfprintf)
PHP_FE(sscanf, arginfo_sscanf)
PHP_FE(fscanf, arginfo_fscanf)
PHP_FE(parse_url, arginfo_parse_url)
PHP_FE(urlencode, arginfo_urlencode)
PHP_FE(urldecode, arginfo_urldecode)
PHP_FE(rawurlencode, arginfo_rawurlencode)
PHP_FE(rawurldecode, arginfo_rawurldecode)
PHP_FE(http_build_query, arginfo_http_build_query)
#if defined(HAVE_SYMLINK) || defined(PHP_WIN32)
PHP_FE(readlink, arginfo_readlink)
PHP_FE(linkinfo, arginfo_linkinfo)
PHP_FE(symlink, arginfo_symlink)
PHP_FE(link, arginfo_link)
#endif
PHP_FE(unlink, arginfo_unlink)
PHP_FE(exec, arginfo_exec)
PHP_FE(system, arginfo_system)
PHP_FE(escapeshellcmd, arginfo_escapeshellcmd)
PHP_FE(escapeshellarg, arginfo_escapeshellarg)
PHP_FE(passthru, arginfo_passthru)
PHP_FE(shell_exec, arginfo_shell_exec)
#ifdef PHP_CAN_SUPPORT_PROC_OPEN
PHP_FE(proc_open, arginfo_proc_open)
PHP_FE(proc_close, arginfo_proc_close)
PHP_FE(proc_terminate, arginfo_proc_terminate)
PHP_FE(proc_get_status, arginfo_proc_get_status)
#endif
#ifdef HAVE_NICE
PHP_FE(proc_nice, arginfo_proc_nice)
#endif
PHP_FE(rand, arginfo_rand)
PHP_FALIAS(srand, mt_srand, arginfo_srand)
PHP_FALIAS(getrandmax, mt_getrandmax, arginfo_getrandmax)
PHP_FE(mt_rand, arginfo_mt_rand)
PHP_FE(mt_srand, arginfo_mt_srand)
PHP_FE(mt_getrandmax, arginfo_mt_getrandmax)
PHP_FE(random_bytes, arginfo_random_bytes)
PHP_FE(random_int, arginfo_random_int)
#if HAVE_GETSERVBYNAME
PHP_FE(getservbyname, arginfo_getservbyname)
#endif
#if HAVE_GETSERVBYPORT
PHP_FE(getservbyport, arginfo_getservbyport)
#endif
#if HAVE_GETPROTOBYNAME
PHP_FE(getprotobyname, arginfo_getprotobyname)
#endif
#if HAVE_GETPROTOBYNUMBER
PHP_FE(getprotobynumber, arginfo_getprotobynumber)
#endif
PHP_FE(getmyuid, arginfo_getmyuid)
PHP_FE(getmygid, arginfo_getmygid)
PHP_FE(getmypid, arginfo_getmypid)
PHP_FE(getmyinode, arginfo_getmyinode)
PHP_FE(getlastmod, arginfo_getlastmod)
PHP_FE(base64_decode, arginfo_base64_decode)
PHP_FE(base64_encode, arginfo_base64_encode)
PHP_FE(password_hash, arginfo_password_hash)
PHP_FE(password_get_info, arginfo_password_get_info)
PHP_FE(password_needs_rehash, arginfo_password_needs_rehash)
PHP_FE(password_verify, arginfo_password_verify)
PHP_FE(password_algos, arginfo_password_algos)
PHP_FE(convert_uuencode, arginfo_convert_uuencode)
PHP_FE(convert_uudecode, arginfo_convert_uudecode)
PHP_FE(abs, arginfo_abs)
PHP_FE(ceil, arginfo_ceil)
PHP_FE(floor, arginfo_floor)
PHP_FE(round, arginfo_round)
PHP_FE(sin, arginfo_sin)
PHP_FE(cos, arginfo_cos)
PHP_FE(tan, arginfo_tan)
PHP_FE(asin, arginfo_asin)
PHP_FE(acos, arginfo_acos)
PHP_FE(atan, arginfo_atan)
PHP_FE(atanh, arginfo_atanh)
PHP_FE(atan2, arginfo_atan2)
PHP_FE(sinh, arginfo_sinh)
PHP_FE(cosh, arginfo_cosh)
PHP_FE(tanh, arginfo_tanh)
PHP_FE(asinh, arginfo_asinh)
PHP_FE(acosh, arginfo_acosh)
PHP_FE(expm1, arginfo_expm1)
PHP_FE(log1p, arginfo_log1p)
PHP_FE(pi, arginfo_pi)
PHP_FE(is_finite, arginfo_is_finite)
PHP_FE(is_nan, arginfo_is_nan)
PHP_FE(is_infinite, arginfo_is_infinite)
PHP_FE(pow, arginfo_pow)
PHP_FE(exp, arginfo_exp)
PHP_FE(log, arginfo_log)
PHP_FE(log10, arginfo_log10)
PHP_FE(sqrt, arginfo_sqrt)
PHP_FE(hypot, arginfo_hypot)
PHP_FE(deg2rad, arginfo_deg2rad)
PHP_FE(rad2deg, arginfo_rad2deg)
PHP_FE(bindec, arginfo_bindec)
PHP_FE(hexdec, arginfo_hexdec)
PHP_FE(octdec, arginfo_octdec)
PHP_FE(decbin, arginfo_decbin)
PHP_FE(decoct, arginfo_decoct)
PHP_FE(dechex, arginfo_dechex)
PHP_FE(base_convert, arginfo_base_convert)
PHP_FE(number_format, arginfo_number_format)
PHP_FE(fmod, arginfo_fmod)
PHP_FE(fdiv, arginfo_fdiv)
PHP_FE(intdiv, arginfo_intdiv)
#ifdef HAVE_INET_NTOP
PHP_FE(inet_ntop, arginfo_inet_ntop)
#endif
#ifdef HAVE_INET_PTON
PHP_FE(inet_pton, arginfo_inet_pton)
#endif
PHP_FE(ip2long, arginfo_ip2long)
PHP_FE(long2ip, arginfo_long2ip)
PHP_FE(getenv, arginfo_getenv)
#ifdef HAVE_PUTENV
PHP_FE(putenv, arginfo_putenv)
#endif
PHP_FE(getopt, arginfo_getopt)
#ifdef HAVE_GETLOADAVG
PHP_FE(sys_getloadavg, arginfo_sys_getloadavg)
#endif
#ifdef HAVE_GETTIMEOFDAY
PHP_FE(microtime, arginfo_microtime)
PHP_FE(gettimeofday, arginfo_gettimeofday)
#endif
#ifdef HAVE_GETRUSAGE
PHP_FE(getrusage, arginfo_getrusage)
#endif
PHP_FE(hrtime, arginfo_hrtime)
#ifdef HAVE_GETTIMEOFDAY
PHP_FE(uniqid, arginfo_uniqid)
#endif
PHP_FE(quoted_printable_decode, arginfo_quoted_printable_decode)
PHP_FE(quoted_printable_encode, arginfo_quoted_printable_encode)
PHP_FE(get_current_user, arginfo_get_current_user)
PHP_FE(set_time_limit, arginfo_set_time_limit)
PHP_FE(header_register_callback, arginfo_header_register_callback)
PHP_FE(get_cfg_var, arginfo_get_cfg_var)
PHP_FE(error_log, arginfo_error_log)
PHP_FE(error_get_last, arginfo_error_get_last)
PHP_FE(error_clear_last, arginfo_error_clear_last)
PHP_FE(call_user_func, arginfo_call_user_func)
PHP_FE(call_user_func_array, arginfo_call_user_func_array)
PHP_FE(forward_static_call, arginfo_forward_static_call)
PHP_FE(forward_static_call_array, arginfo_forward_static_call_array)
PHP_FE(serialize, arginfo_serialize)
PHP_FE(unserialize, arginfo_unserialize)
PHP_FE(var_dump, arginfo_var_dump)
PHP_FE(var_export, arginfo_var_export)
PHP_FE(debug_zval_dump, arginfo_debug_zval_dump)
PHP_FE(print_r, arginfo_print_r)
PHP_FE(memory_get_usage, arginfo_memory_get_usage)
PHP_FE(memory_get_peak_usage, arginfo_memory_get_peak_usage)
PHP_FE(register_shutdown_function, arginfo_register_shutdown_function)
PHP_FE(register_tick_function, arginfo_register_tick_function)
PHP_FE(unregister_tick_function, arginfo_unregister_tick_function)
PHP_FE(highlight_file, arginfo_highlight_file)
PHP_FALIAS(show_source, highlight_file, arginfo_show_source)
PHP_FE(highlight_string, arginfo_highlight_string)
PHP_FE(php_strip_whitespace, arginfo_php_strip_whitespace)
PHP_FE(ini_get, arginfo_ini_get)
PHP_FE(ini_get_all, arginfo_ini_get_all)
PHP_FE(ini_set, arginfo_ini_set)
PHP_FALIAS(ini_alter, ini_set, arginfo_ini_alter)
PHP_FE(ini_restore, arginfo_ini_restore)
PHP_FE(get_include_path, arginfo_get_include_path)
PHP_FE(set_include_path, arginfo_set_include_path)
PHP_FE(setcookie, arginfo_setcookie)
PHP_FE(setrawcookie, arginfo_setrawcookie)
PHP_FE(header, arginfo_header)
PHP_FE(header_remove, arginfo_header_remove)
PHP_FE(headers_sent, arginfo_headers_sent)
PHP_FE(headers_list, arginfo_headers_list)
PHP_FE(http_response_code, arginfo_http_response_code)
PHP_FE(connection_aborted, arginfo_connection_aborted)
PHP_FE(connection_status, arginfo_connection_status)
PHP_FE(ignore_user_abort, arginfo_ignore_user_abort)
PHP_FE(parse_ini_file, arginfo_parse_ini_file)
PHP_FE(parse_ini_string, arginfo_parse_ini_string)
#if ZEND_DEBUG
PHP_FE(config_get_hash, arginfo_config_get_hash)
#endif
PHP_FE(is_uploaded_file, arginfo_is_uploaded_file)
PHP_FE(move_uploaded_file, arginfo_move_uploaded_file)
/* functions from dns.c */
PHP_FE(gethostbyaddr, arginfo_gethostbyaddr)
PHP_FE(gethostbyname, arginfo_gethostbyname)
PHP_FE(gethostbynamel, arginfo_gethostbynamel)
#ifdef HAVE_GETHOSTNAME
PHP_FE(gethostname, arginfo_gethostname)
#endif
#if defined(PHP_WIN32) || HAVE_GETIFADDRS
PHP_FE(net_get_interfaces, arginfo_net_get_interfaces)
#endif
#if defined(PHP_WIN32) || HAVE_DNS_SEARCH_FUNC
PHP_FE(dns_check_record, arginfo_dns_check_record)
PHP_FALIAS(checkdnsrr, dns_check_record, arginfo_checkdnsrr)
# if defined(PHP_WIN32) || HAVE_FULL_DNS_FUNCS
PHP_FE(dns_get_mx, arginfo_dns_get_mx)
PHP_FALIAS(getmxrr, dns_get_mx, arginfo_getmxrr)
PHP_FE(dns_get_record, arginfo_dns_get_record)
# endif
#endif
/* functions from type.c */
PHP_FE(intval, arginfo_intval)
PHP_FE(floatval, arginfo_floatval)
PHP_FALIAS(doubleval, floatval, arginfo_doubleval)
PHP_FE(strval, arginfo_strval)
PHP_FE(boolval, arginfo_boolval)
PHP_FE(gettype, arginfo_gettype)
PHP_FE(settype, arginfo_settype)
PHP_FE(is_null, arginfo_is_null)
PHP_FE(is_resource, arginfo_is_resource)
PHP_FE(is_bool, arginfo_is_bool)
PHP_FE(is_int, arginfo_is_int)
PHP_FE(is_float, arginfo_is_float)
PHP_FALIAS(is_integer, is_int, arginfo_is_integer)
PHP_FALIAS(is_long, is_int, arginfo_is_long)
PHP_FALIAS(is_double, is_float, arginfo_is_double)
PHP_DEP_FALIAS(is_real, is_float, arginfo_is_real)
PHP_FE(is_numeric, arginfo_is_numeric)
PHP_FE(is_string, arginfo_is_string)
PHP_FE(is_array, arginfo_is_array)
PHP_FE(is_object, arginfo_is_object)
PHP_FE(is_scalar, arginfo_is_scalar)
PHP_FE(is_callable, arginfo_is_callable)
PHP_FE(is_iterable, arginfo_is_iterable)
PHP_FE(is_countable, arginfo_is_countable)
/* functions from file.c */
PHP_FE(pclose, arginfo_pclose)
PHP_FE(popen, arginfo_popen)
PHP_FE(readfile, arginfo_readfile)
PHP_FE(rewind, arginfo_rewind)
PHP_FE(rmdir, arginfo_rmdir)
PHP_FE(umask, arginfo_umask)
PHP_FE(fclose, arginfo_fclose)
PHP_FE(feof, arginfo_feof)
PHP_FE(fgetc, arginfo_fgetc)
PHP_FE(fgets, arginfo_fgets)
PHP_FE(fread, arginfo_fread)
PHP_FE(fopen, arginfo_fopen)
PHP_FE(fpassthru, arginfo_fpassthru)
PHP_FE(ftruncate, arginfo_ftruncate)
PHP_FE(fstat, arginfo_fstat)
PHP_FE(fseek, arginfo_fseek)
PHP_FE(ftell, arginfo_ftell)
PHP_FE(fflush, arginfo_fflush)
PHP_FE(fwrite, arginfo_fwrite)
PHP_FALIAS(fputs, fwrite, arginfo_fputs)
PHP_FE(mkdir, arginfo_mkdir)
PHP_FE(rename, arginfo_rename)
PHP_FE(copy, arginfo_copy)
PHP_FE(tempnam, arginfo_tempnam)
PHP_FE(tmpfile, arginfo_tmpfile)
PHP_FE(file, arginfo_file)
PHP_FE(file_get_contents, arginfo_file_get_contents)
PHP_FE(file_put_contents, arginfo_file_put_contents)
PHP_FE(stream_select, arginfo_stream_select)
PHP_FE(stream_context_create, arginfo_stream_context_create)
PHP_FE(stream_context_set_params, arginfo_stream_context_set_params)
PHP_FE(stream_context_get_params, arginfo_stream_context_get_params)
PHP_FE(stream_context_set_option, arginfo_stream_context_set_option)
PHP_FE(stream_context_get_options, arginfo_stream_context_get_options)
PHP_FE(stream_context_get_default, arginfo_stream_context_get_default)
PHP_FE(stream_context_set_default, arginfo_stream_context_set_default)
PHP_FE(stream_filter_prepend, arginfo_stream_filter_prepend)
PHP_FE(stream_filter_append, arginfo_stream_filter_append)
PHP_FE(stream_filter_remove, arginfo_stream_filter_remove)
PHP_FE(stream_socket_client, arginfo_stream_socket_client)
PHP_FE(stream_socket_server, arginfo_stream_socket_server)
PHP_FE(stream_socket_accept, arginfo_stream_socket_accept)
PHP_FE(stream_socket_get_name, arginfo_stream_socket_get_name)
PHP_FE(stream_socket_recvfrom, arginfo_stream_socket_recvfrom)
PHP_FE(stream_socket_sendto, arginfo_stream_socket_sendto)
PHP_FE(stream_socket_enable_crypto, arginfo_stream_socket_enable_crypto)
#ifdef HAVE_SHUTDOWN
PHP_FE(stream_socket_shutdown, arginfo_stream_socket_shutdown)
#endif
#if HAVE_SOCKETPAIR
PHP_FE(stream_socket_pair, arginfo_stream_socket_pair)
#endif
PHP_FE(stream_copy_to_stream, arginfo_stream_copy_to_stream)
PHP_FE(stream_get_contents, arginfo_stream_get_contents)
PHP_FE(stream_supports_lock, arginfo_stream_supports_lock)
PHP_FE(stream_isatty, arginfo_stream_isatty)
#ifdef PHP_WIN32
PHP_FE(sapi_windows_vt100_support, arginfo_sapi_windows_vt100_support)
#endif
PHP_FE(fgetcsv, arginfo_fgetcsv)
PHP_FE(fputcsv, arginfo_fputcsv)
PHP_FE(flock, arginfo_flock)
PHP_FE(get_meta_tags, arginfo_get_meta_tags)
PHP_FE(stream_set_read_buffer, arginfo_stream_set_read_buffer)
PHP_FE(stream_set_write_buffer, arginfo_stream_set_write_buffer)
PHP_FALIAS(set_file_buffer, stream_set_write_buffer, arginfo_set_file_buffer)
PHP_FE(stream_set_chunk_size, arginfo_stream_set_chunk_size)
PHP_FE(stream_set_blocking, arginfo_stream_set_blocking)
PHP_FALIAS(socket_set_blocking, stream_set_blocking, arginfo_socket_set_blocking)
PHP_FE(stream_get_meta_data, arginfo_stream_get_meta_data)
PHP_FE(stream_get_line, arginfo_stream_get_line)
PHP_FE(stream_wrapper_register, arginfo_stream_wrapper_register)
PHP_FALIAS(stream_register_wrapper, stream_wrapper_register, arginfo_stream_register_wrapper)
PHP_FE(stream_wrapper_unregister, arginfo_stream_wrapper_unregister)
PHP_FE(stream_wrapper_restore, arginfo_stream_wrapper_restore)
PHP_FE(stream_get_wrappers, arginfo_stream_get_wrappers)
PHP_FE(stream_get_transports, arginfo_stream_get_transports)
PHP_FE(stream_resolve_include_path, arginfo_stream_resolve_include_path)
PHP_FE(stream_is_local, arginfo_stream_is_local)
PHP_FE(get_headers, arginfo_get_headers)
#if HAVE_SYS_TIME_H || defined(PHP_WIN32)
PHP_FE(stream_set_timeout, arginfo_stream_set_timeout)
PHP_FALIAS(socket_set_timeout, stream_set_timeout, arginfo_socket_set_timeout)
#endif
PHP_FALIAS(socket_get_status, stream_get_meta_data, arginfo_socket_get_status)
PHP_FE(realpath, arginfo_realpath)
#ifdef HAVE_FNMATCH
PHP_FE(fnmatch, arginfo_fnmatch)
#endif
/* functions from fsock.c */
PHP_FE(fsockopen, arginfo_fsockopen)
PHP_FE(pfsockopen, arginfo_pfsockopen)
/* functions from pack.c */
PHP_FE(pack, arginfo_pack)
PHP_FE(unpack, arginfo_unpack)
/* functions from browscap.c */
PHP_FE(get_browser, arginfo_get_browser)
/* functions from crypt.c */
PHP_FE(crypt, arginfo_crypt)
/* functions from dir.c */
PHP_FE(opendir, arginfo_opendir)
PHP_FE(closedir, arginfo_closedir)
PHP_FE(chdir, arginfo_chdir)
#if defined(HAVE_CHROOT) && !defined(ZTS) && ENABLE_CHROOT_FUNC
PHP_FE(chroot, arginfo_chroot)
#endif
PHP_FE(getcwd, arginfo_getcwd)
PHP_FE(rewinddir, arginfo_rewinddir)
PHP_FE(readdir, arginfo_readdir)
PHP_FALIAS(dir, getdir, arginfo_dir)
PHP_FE(scandir, arginfo_scandir)
#ifdef HAVE_GLOB
PHP_FE(glob, arginfo_glob)
#endif
/* functions from filestat.c */
PHP_FE(fileatime, arginfo_fileatime)
PHP_FE(filectime, arginfo_filectime)
PHP_FE(filegroup, arginfo_filegroup)
PHP_FE(fileinode, arginfo_fileinode)
PHP_FE(filemtime, arginfo_filemtime)
PHP_FE(fileowner, arginfo_fileowner)
PHP_FE(fileperms, arginfo_fileperms)
PHP_FE(filesize, arginfo_filesize)
PHP_FE(filetype, arginfo_filetype)
PHP_FE(file_exists, arginfo_file_exists)
PHP_FE(is_writable, arginfo_is_writable)
PHP_FALIAS(is_writeable, is_writable, arginfo_is_writeable)
PHP_FE(is_readable, arginfo_is_readable)
PHP_FE(is_executable, arginfo_is_executable)
PHP_FE(is_file, arginfo_is_file)
PHP_FE(is_dir, arginfo_is_dir)
PHP_FE(is_link, arginfo_is_link)
PHP_FE(stat, arginfo_stat)
PHP_FE(lstat, arginfo_lstat)
PHP_FE(chown, arginfo_chown)
PHP_FE(chgrp, arginfo_chgrp)
#if HAVE_LCHOWN
PHP_FE(lchown, arginfo_lchown)
#endif
#if HAVE_LCHOWN
PHP_FE(lchgrp, arginfo_lchgrp)
#endif
PHP_FE(chmod, arginfo_chmod)
#if HAVE_UTIME
PHP_FE(touch, arginfo_touch)
#endif
PHP_FE(clearstatcache, arginfo_clearstatcache)
PHP_FE(disk_total_space, arginfo_disk_total_space)
PHP_FE(disk_free_space, arginfo_disk_free_space)
PHP_FALIAS(diskfreespace, disk_free_space, arginfo_diskfreespace)
PHP_FE(realpath_cache_size, arginfo_realpath_cache_size)
PHP_FE(realpath_cache_get, arginfo_realpath_cache_get)
/* functions from mail.c */
PHP_FE(mail, arginfo_mail)
/* functions from syslog.c */
#ifdef HAVE_SYSLOG_H
PHP_FE(openlog, arginfo_openlog)
PHP_FE(syslog, arginfo_syslog)
PHP_FE(closelog, arginfo_closelog)
#endif
/* functions from lcg.c */
PHP_FE(lcg_value, arginfo_lcg_value)
/* functions from metaphone.c */
PHP_FE(metaphone, arginfo_metaphone)
/* functions from output.c */
PHP_FE(ob_start, arginfo_ob_start)
PHP_FE(ob_flush, arginfo_ob_flush)
PHP_FE(ob_clean, arginfo_ob_clean)
PHP_FE(ob_end_flush, arginfo_ob_end_flush)
PHP_FE(ob_end_clean, arginfo_ob_end_clean)
PHP_FE(ob_get_flush, arginfo_ob_get_flush)
PHP_FE(ob_get_clean, arginfo_ob_get_clean)
PHP_FE(ob_get_length, arginfo_ob_get_length)
PHP_FE(ob_get_level, arginfo_ob_get_level)
PHP_FE(ob_get_status, arginfo_ob_get_status)
PHP_FE(ob_get_contents, arginfo_ob_get_contents)
PHP_FE(ob_implicit_flush, arginfo_ob_implicit_flush)
PHP_FE(ob_list_handlers, arginfo_ob_list_handlers)
/* functions from array.c */
PHP_FE(ksort, arginfo_ksort)
PHP_FE(krsort, arginfo_krsort)
PHP_FE(natsort, arginfo_natsort)
PHP_FE(natcasesort, arginfo_natcasesort)
PHP_FE(asort, arginfo_asort)
PHP_FE(arsort, arginfo_arsort)
PHP_FE(sort, arginfo_sort)
PHP_FE(rsort, arginfo_rsort)
PHP_FE(usort, arginfo_usort)
PHP_FE(uasort, arginfo_uasort)
PHP_FE(uksort, arginfo_uksort)
PHP_FE(shuffle, arginfo_shuffle)
PHP_FE(array_walk, arginfo_array_walk)
PHP_FE(array_walk_recursive, arginfo_array_walk_recursive)
PHP_FE(count, arginfo_count)
PHP_FE(end, arginfo_end)
PHP_FE(prev, arginfo_prev)
PHP_FE(next, arginfo_next)
PHP_FE(reset, arginfo_reset)
PHP_FE(current, arginfo_current)
PHP_FE(key, arginfo_key)
PHP_FE(min, arginfo_min)
PHP_FE(max, arginfo_max)
PHP_FE(in_array, arginfo_in_array)
PHP_FE(array_search, arginfo_array_search)
PHP_FE(extract, arginfo_extract)
PHP_FE(compact, arginfo_compact)
PHP_FE(array_fill, arginfo_array_fill)
PHP_FE(array_fill_keys, arginfo_array_fill_keys)
PHP_FE(range, arginfo_range)
PHP_FE(array_multisort, arginfo_array_multisort)
PHP_FE(array_push, arginfo_array_push)
PHP_FE(array_pop, arginfo_array_pop)
PHP_FE(array_shift, arginfo_array_shift)
PHP_FE(array_unshift, arginfo_array_unshift)
PHP_FE(array_splice, arginfo_array_splice)
PHP_FE(array_slice, arginfo_array_slice)
PHP_FE(array_merge, arginfo_array_merge)
PHP_FE(array_merge_recursive, arginfo_array_merge_recursive)
PHP_FE(array_replace, arginfo_array_replace)
PHP_FE(array_replace_recursive, arginfo_array_replace_recursive)
PHP_FE(array_keys, arginfo_array_keys)
PHP_FE(array_key_first, arginfo_array_key_first)
PHP_FE(array_key_last, arginfo_array_key_last)
PHP_FE(array_values, arginfo_array_values)
PHP_FE(array_count_values, arginfo_array_count_values)
PHP_FE(array_column, arginfo_array_column)
PHP_FE(array_reverse, arginfo_array_reverse)
PHP_FE(array_reduce, arginfo_array_reduce)
PHP_FE(array_pad, arginfo_array_pad)
PHP_FE(array_flip, arginfo_array_flip)
PHP_FE(array_change_key_case, arginfo_array_change_key_case)
PHP_FE(array_rand, arginfo_array_rand)
PHP_FE(array_unique, arginfo_array_unique)
PHP_FE(array_intersect, arginfo_array_intersect)
PHP_FE(array_intersect_key, arginfo_array_intersect_key)
PHP_FE(array_intersect_ukey, arginfo_array_intersect_ukey)
PHP_FE(array_uintersect, arginfo_array_uintersect)
PHP_FE(array_intersect_assoc, arginfo_array_intersect_assoc)
PHP_FE(array_uintersect_assoc, arginfo_array_uintersect_assoc)
PHP_FE(array_intersect_uassoc, arginfo_array_intersect_uassoc)
PHP_FE(array_uintersect_uassoc, arginfo_array_uintersect_uassoc)
PHP_FE(array_diff, arginfo_array_diff)
PHP_FE(array_diff_key, arginfo_array_diff_key)
PHP_FE(array_diff_ukey, arginfo_array_diff_ukey)
PHP_FE(array_udiff, arginfo_array_udiff)
PHP_FE(array_diff_assoc, arginfo_array_diff_assoc)
PHP_FE(array_udiff_assoc, arginfo_array_udiff_assoc)
PHP_FE(array_diff_uassoc, arginfo_array_diff_uassoc)
PHP_FE(array_udiff_uassoc, arginfo_array_udiff_uassoc)
PHP_FE(array_sum, arginfo_array_sum)
PHP_FE(array_product, arginfo_array_product)
PHP_FE(array_filter, arginfo_array_filter)
PHP_FE(array_map, arginfo_array_map)
PHP_FE(array_chunk, arginfo_array_chunk)
PHP_FE(array_combine, arginfo_array_combine)
PHP_FE(array_key_exists, arginfo_array_key_exists)
/* aliases from array.c */
PHP_FALIAS(pos, current, arginfo_pos)
PHP_FALIAS(sizeof, count, arginfo_sizeof)
PHP_FALIAS(key_exists, array_key_exists, arginfo_key_exists)
/* functions from assert.c */
PHP_FE(assert, arginfo_assert)
PHP_FE(assert_options, arginfo_assert_options)
/* functions from versioning.c */
PHP_FE(version_compare, arginfo_version_compare)
/* functions from ftok.c*/
#if HAVE_FTOK
PHP_FE(ftok, arginfo_ftok)
#endif
PHP_FE(str_rot13, arginfo_str_rot13)
PHP_FE(stream_get_filters, arginfo_stream_get_filters)
PHP_FE(stream_filter_register, arginfo_stream_filter_register)
PHP_FE(stream_bucket_make_writeable, arginfo_stream_bucket_make_writeable)
PHP_FE(stream_bucket_prepend, arginfo_stream_bucket_prepend)
PHP_FE(stream_bucket_append, arginfo_stream_bucket_append)
PHP_FE(stream_bucket_new, arginfo_stream_bucket_new)
PHP_FE(output_add_rewrite_var, arginfo_output_add_rewrite_var)
PHP_FE(output_reset_rewrite_vars, arginfo_output_reset_rewrite_vars)
PHP_FE(sys_get_temp_dir, arginfo_sys_get_temp_dir)
#ifdef PHP_WIN32
PHP_FE(sapi_windows_cp_set, arginfo_sapi_windows_cp_set)
PHP_FE(sapi_windows_cp_get, arginfo_sapi_windows_cp_get)
PHP_FE(sapi_windows_cp_is_utf8, arginfo_sapi_windows_cp_is_utf8)
PHP_FE(sapi_windows_cp_conv, arginfo_sapi_windows_cp_conv)
PHP_FE(sapi_windows_set_ctrl_handler, arginfo_sapi_windows_set_ctrl_handler)
PHP_FE(sapi_windows_generate_ctrl_event, arginfo_sapi_windows_generate_ctrl_event)
#endif
PHP_FE_END
};
/* }}} */
static const zend_module_dep standard_deps[] = { /* {{{ */
ZEND_MOD_OPTIONAL("session")
ZEND_MOD_END
@ -836,7 +131,7 @@ zend_module_entry basic_functions_module = { /* {{{ */
NULL,
standard_deps,
"standard", /* extension name */
basic_functions, /* function list */
ext_functions, /* function list */
PHP_MINIT(basic), /* process startup */
PHP_MSHUTDOWN(basic), /* process shutdown */
PHP_RINIT(basic), /* request startup */

View file

@ -1,5 +1,7 @@
<?php
/** @generate-function-entries */
/* main/main.c */
function set_time_limit(int $seconds): bool {}
@ -47,6 +49,7 @@ function output_add_rewrite_var(string $name, string $value): bool {}
function stream_wrapper_register(string $protocol, string $classname, int $flags = 0): bool {}
/** @alias stream_wrapper_register */
function stream_register_wrapper(string $protocol, string $classname, int $flags = 0): bool {}
function stream_wrapper_unregister(string $protocol): bool {}
@ -64,7 +67,10 @@ function ksort(array &$arg, int $sort_flags = SORT_REGULAR): bool {}
/** @param mixed $var */
function count($var, int $mode = COUNT_NORMAL): int {}
/** @param mixed $var */
/**
* @param mixed $var
* @alias count
*/
function sizeof($var, int $mode = COUNT_NORMAL): int {}
function natsort(array &$arg): bool {}
@ -100,7 +106,10 @@ function reset(array|object &$arg) {}
/** @return mixed */
function current(array|object $arg) {}
/** @return mixed */
/**
* @return mixed
* @alias current
*/
function pos(array|object $arg) {}
function key(array|object $arg): int|string|null {}
@ -238,7 +247,10 @@ function array_map(?callable $callback, array $arr1, array ...$arrays): array {}
/** @param mixed $key */
function array_key_exists($key, array $search): bool {}
/** @param mixed $key */
/**
* @param mixed $key
* @alias array_key_exists
*/
function key_exists($key, array $search): bool {}
function array_chunk(array $arg, int $size, bool $preserve_keys = false): array {}
@ -316,6 +328,7 @@ function register_shutdown_function($function, ...$args): ?bool {}
function highlight_file(string $filename, bool $return = false): string|bool|null {}
/** @alias highlight_file */
function show_source(string $filename, bool $return = false): string|bool|null {}
function php_strip_whitespace(string $filename): string {}
@ -328,6 +341,7 @@ function ini_get_all(?string $extension = null, bool $details = true): array|fal
function ini_set(string $varname, string $value): string|false {}
/** @alias ini_set */
function ini_alter(string $varname, string $value): string|false {}
function ini_restore(string $varname): void {}
@ -415,12 +429,14 @@ function gethostbynamel(string $hostname): array|false {}
#if defined(PHP_WIN32) || HAVE_DNS_SEARCH_FUNC
function dns_check_record(string $hostname, string $type = "MX"): bool {}
/** @alias dns_check_record */
function checkdnsrr(string $hostname, string $type = "MX"): bool {}
function dns_get_record(string $hostname, int $type = DNS_ANY, &$authns = null, &$addtl = null, bool $raw = false): array|false {}
function dns_get_mx(string $hostname, &$mxhosts, &$weight = null): bool {}
/** @alias dns_get_mx */
function getmxrr(string $hostname, &$mxhosts, &$weight = null): bool {}
#endif
@ -546,6 +562,7 @@ function trim(string $str, string $character_mask = " \n\r\t\v\0"): string {}
function rtrim(string $str, string $character_mask = " \n\r\t\v\0"): string {}
/** @alias rtrim */
function chop(string $str, string $character_mask = " \n\r\t\v\0"): string {}
function ltrim(string $str, string $character_mask = " \n\r\t\v\0"): string {}
@ -556,6 +573,7 @@ function explode(string $separator, string $str, int $limit = PHP_INT_MAX): arra
function implode(string|array $glue, array $pieces = UNKNOWN): string {}
/** @alias implode */
function join(string|array $glue, array $pieces = UNKNOWN): string {}
function strtok(string $str, string $token = UNKNOWN): string|false {}
@ -574,6 +592,7 @@ function stristr(string $haystack, string $needle, bool $before_needle = false):
function strstr(string $haystack, string $needle, bool $before_needle = false): string|false {}
/** @alias strstr */
function strchr(string $haystack, string $needle, bool $before_needle = false): string|false {}
function strpos(string $haystack, string $needle, int $offset = 0): int|false {}
@ -700,7 +719,10 @@ function opendir(string $path, $context = UNKNOWN) {}
/** @param resource $context */
function getdir(string $path, $context = UNKNOWN): Directory|false {}
/** @param resource $context */
/**
* @param resource $context
* @alias getdir
*/
function dir(string $path, $context = UNKNOWN): Directory|false {}
/** @param resource $dir_handle */
@ -816,7 +838,10 @@ function fflush($handle): bool {}
/** @param resource $handle */
function fwrite($handle, string $content, int $max_length = UNKNOWN): int|false {}
/** @param resource $handle */
/**
* @param resource $handle
* @alias fwrite
*/
function fputs($handle, string $content, int $max_length = UNKNOWN): int|false {}
/** @param resource|null $context */
@ -886,6 +911,7 @@ function file_exists(string $filename): bool {}
function is_writable(string $filename): bool {}
/** @alias is_writable */
function is_writeable(string $filename): bool {}
function is_readable(string $filename): bool {}
@ -924,6 +950,7 @@ function disk_total_space(string $directory): float|false {}
function disk_free_space(string $directory): float|false {}
/** @alias disk_free_space */
function diskfreespace(string $directory): float|false {}
function realpath_cache_get(): array {}
@ -1163,6 +1190,7 @@ function quoted_printable_encode(string $str): string {}
function mt_srand(int $seed = 0, int $mode = MT_RAND_MT19937): void {}
/** @alias mt_srand */
function srand(int $seed = 0, int $mode = MT_RAND_MT19937): void {}
function rand(int $min = 0, int $max = PHP_INT_MAX): int {}
@ -1171,6 +1199,7 @@ function mt_rand(int $min = 0, int $max = PHP_INT_MAX): int {}
function mt_getrandmax(): int {}
/** @alias mt_getrandmax */
function getrandmax(): int {}
/* random.c */
@ -1287,7 +1316,9 @@ function stream_supports_lock($stream): bool {}
/** @param resource $stream */
function stream_set_write_buffer($stream, int $buffer): int {}
/** @param resource $stream */
/**
* @param resource $stream
* @alias stream_set_write_buffer */
function set_file_buffer($stream, int $buffer): int {}
/** @param resource $stream */
@ -1296,13 +1327,19 @@ function stream_set_read_buffer($stream, int $buffer): int {}
/** @param resource $stream */
function stream_set_blocking($stream, bool $mode): bool {}
/** @param resource $stream */
/**
* @param resource $stream
* @alias stream_set_blocking
*/
function socket_set_blocking($stream, bool $mode): bool {}
/** @param resource $stream */
function stream_get_meta_data($stream): array {}
/** @param resource $stream */
/**
* @param resource $stream
* @alias stream_get_meta_data
*/
function socket_get_status($stream): array {}
/** @param resource $handle */
@ -1332,7 +1369,10 @@ function stream_set_chunk_size($stream, int $size): int {}
/** @param resource $socket */
function stream_set_timeout($socket, int $seconds, int $microseconds = 0): bool {}
/** @param resource $socket */
/**
* @param resource $socket
* @alias stream_set_timeout
*/
function socket_set_timeout($socket, int $seconds, int $microseconds = 0): bool {}
#endif
@ -1349,7 +1389,10 @@ function intval($value, int $base = 10): int {}
/** @param mixed $value */
function floatval($value): float {}
/** @param mixed $value */
/**
* @param mixed $value
* @alias floatval
*/
function doubleval($value): float {}
/** @param mixed $value */
@ -1370,19 +1413,32 @@ function is_bool($value): bool {}
/** @param mixed $value */
function is_int($value): bool {}
/** @param mixed $value */
/**
* @param mixed $value
* @alias is_int
*/
function is_integer($value): bool {}
/** @param mixed $value */
/**
* @param mixed $value
* @alias is_int
*/
function is_long($value): bool {}
/** @param mixed $value */
function is_float($value): bool {}
/** @param mixed $value */
/**
* @param mixed $value
* @alias is_float
*/
function is_double($value): bool {}
/** @param mixed $value */
/**
* @param mixed $value
* @alias is_float
* @deprecated
*/
function is_real($value): bool {}
/** @param mixed $value */
@ -1480,6 +1536,7 @@ function version_compare(string $version1, string $version2, string $operator =
/* win32/codepage.c */
#ifdef PHP_WIN32
function sapi_windows_cp_set(int $cp): bool {}
function sapi_windows_cp_get(string $kind = UNKNOWN): int {}
@ -1497,3 +1554,4 @@ function sapi_windows_set_ctrl_handler($handler, bool $add = true): bool {}
/** @param callable|null $handler */
function sapi_windows_generate_ctrl_event(int $event, int $pid = 0): bool {}
#endif

File diff suppressed because it is too large Load diff