Declare ext/standard constants in stubs - part 1 (#9404)

This commit is contained in:
Máté Kocsis 2022-08-24 16:09:48 +02:00 committed by GitHub
parent 10a27bc47b
commit bc4c012611
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 179 additions and 64 deletions

View file

@ -645,13 +645,13 @@ PHP_METHOD(SplObjectStorage, contains)
PHP_METHOD(SplObjectStorage, count)
{
spl_SplObjectStorage *intern = Z_SPLOBJSTORAGE_P(ZEND_THIS);
zend_long mode = COUNT_NORMAL;
zend_long mode = PHP_COUNT_NORMAL;
if (zend_parse_parameters(ZEND_NUM_ARGS(), "|l", &mode) == FAILURE) {
RETURN_THROWS();
}
if (mode == COUNT_RECURSIVE) {
if (mode == PHP_COUNT_RECURSIVE) {
RETURN_LONG(php_count_recursive(&intern->storage));
}

View file

@ -44,18 +44,6 @@
#include "ext/random/php_random.h"
/* {{{ defines */
#define EXTR_OVERWRITE 0
#define EXTR_SKIP 1
#define EXTR_PREFIX_SAME 2
#define EXTR_PREFIX_ALL 3
#define EXTR_PREFIX_INVALID 4
#define EXTR_PREFIX_IF_EXISTS 5
#define EXTR_IF_EXISTS 6
#define EXTR_REFS 0x100
#define CASE_LOWER 0
#define CASE_UPPER 1
#define DIFF_NORMAL 1
#define DIFF_KEY 2
@ -89,34 +77,6 @@ PHP_MINIT_FUNCTION(array) /* {{{ */
{
ZEND_INIT_MODULE_GLOBALS(array, php_array_init_globals, NULL);
REGISTER_LONG_CONSTANT("EXTR_OVERWRITE", EXTR_OVERWRITE, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("EXTR_SKIP", EXTR_SKIP, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("EXTR_PREFIX_SAME", EXTR_PREFIX_SAME, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("EXTR_PREFIX_ALL", EXTR_PREFIX_ALL, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("EXTR_PREFIX_INVALID", EXTR_PREFIX_INVALID, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("EXTR_PREFIX_IF_EXISTS", EXTR_PREFIX_IF_EXISTS, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("EXTR_IF_EXISTS", EXTR_IF_EXISTS, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("EXTR_REFS", EXTR_REFS, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("SORT_ASC", PHP_SORT_ASC, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("SORT_DESC", PHP_SORT_DESC, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("SORT_REGULAR", PHP_SORT_REGULAR, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("SORT_NUMERIC", PHP_SORT_NUMERIC, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("SORT_STRING", PHP_SORT_STRING, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("SORT_LOCALE_STRING", PHP_SORT_LOCALE_STRING, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("SORT_NATURAL", PHP_SORT_NATURAL, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("SORT_FLAG_CASE", PHP_SORT_FLAG_CASE, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("CASE_LOWER", CASE_LOWER, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("CASE_UPPER", CASE_UPPER, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("COUNT_NORMAL", COUNT_NORMAL, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("COUNT_RECURSIVE", COUNT_RECURSIVE, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("ARRAY_FILTER_USE_BOTH", ARRAY_FILTER_USE_BOTH, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("ARRAY_FILTER_USE_KEY", ARRAY_FILTER_USE_KEY, CONST_CS | CONST_PERSISTENT);
return SUCCESS;
}
/* }}} */
@ -661,7 +621,7 @@ PHPAPI zend_long php_count_recursive(HashTable *ht) /* {{{ */
PHP_FUNCTION(count)
{
zval *array;
zend_long mode = COUNT_NORMAL;
zend_long mode = PHP_COUNT_NORMAL;
zend_long cnt;
ZEND_PARSE_PARAMETERS_START(1, 2)
@ -670,14 +630,14 @@ PHP_FUNCTION(count)
Z_PARAM_LONG(mode)
ZEND_PARSE_PARAMETERS_END();
if (mode != COUNT_NORMAL && mode != COUNT_RECURSIVE) {
if (mode != PHP_COUNT_NORMAL && mode != PHP_COUNT_RECURSIVE) {
zend_argument_value_error(2, "must be either COUNT_NORMAL or COUNT_RECURSIVE");
RETURN_THROWS();
}
switch (Z_TYPE_P(array)) {
case IS_ARRAY:
if (mode != COUNT_RECURSIVE) {
if (mode != PHP_COUNT_RECURSIVE) {
cnt = zend_hash_num_elements(Z_ARRVAL_P(array));
} else {
cnt = php_count_recursive(Z_ARRVAL_P(array));
@ -2397,7 +2357,7 @@ PHP_FUNCTION(extract)
{
zval *var_array_param;
zend_long extract_refs;
zend_long extract_type = EXTR_OVERWRITE;
zend_long extract_type = PHP_EXTR_OVERWRITE;
zend_string *prefix = NULL;
zend_long count;
zend_array *symbol_table;
@ -2409,18 +2369,18 @@ PHP_FUNCTION(extract)
Z_PARAM_STR(prefix)
ZEND_PARSE_PARAMETERS_END();
extract_refs = (extract_type & EXTR_REFS);
extract_refs = (extract_type & PHP_EXTR_REFS);
if (extract_refs) {
SEPARATE_ARRAY(var_array_param);
}
extract_type &= 0xff;
if (extract_type < EXTR_OVERWRITE || extract_type > EXTR_IF_EXISTS) {
if (extract_type < PHP_EXTR_OVERWRITE || extract_type > PHP_EXTR_IF_EXISTS) {
zend_argument_value_error(2, "must be a valid extract type");
RETURN_THROWS();
}
if (extract_type > EXTR_SKIP && extract_type <= EXTR_PREFIX_IF_EXISTS && ZEND_NUM_ARGS() < 3) {
if (extract_type > PHP_EXTR_SKIP && extract_type <= PHP_EXTR_PREFIX_IF_EXISTS && ZEND_NUM_ARGS() < 3) {
zend_argument_value_error(3, "is required when using this extract type");
RETURN_THROWS();
}
@ -2441,22 +2401,22 @@ PHP_FUNCTION(extract)
if (extract_refs) {
switch (extract_type) {
case EXTR_IF_EXISTS:
case PHP_EXTR_IF_EXISTS:
count = php_extract_ref_if_exists(Z_ARRVAL_P(var_array_param), symbol_table);
break;
case EXTR_OVERWRITE:
case PHP_EXTR_OVERWRITE:
count = php_extract_ref_overwrite(Z_ARRVAL_P(var_array_param), symbol_table);
break;
case EXTR_PREFIX_IF_EXISTS:
case PHP_EXTR_PREFIX_IF_EXISTS:
count = php_extract_ref_prefix_if_exists(Z_ARRVAL_P(var_array_param), symbol_table, prefix);
break;
case EXTR_PREFIX_SAME:
case PHP_EXTR_PREFIX_SAME:
count = php_extract_ref_prefix_same(Z_ARRVAL_P(var_array_param), symbol_table, prefix);
break;
case EXTR_PREFIX_ALL:
case PHP_EXTR_PREFIX_ALL:
count = php_extract_ref_prefix_all(Z_ARRVAL_P(var_array_param), symbol_table, prefix);
break;
case EXTR_PREFIX_INVALID:
case PHP_EXTR_PREFIX_INVALID:
count = php_extract_ref_prefix_invalid(Z_ARRVAL_P(var_array_param), symbol_table, prefix);
break;
default:
@ -2468,22 +2428,22 @@ PHP_FUNCTION(extract)
zval array_copy;
ZVAL_COPY(&array_copy, var_array_param);
switch (extract_type) {
case EXTR_IF_EXISTS:
case PHP_EXTR_IF_EXISTS:
count = php_extract_if_exists(Z_ARRVAL(array_copy), symbol_table);
break;
case EXTR_OVERWRITE:
case PHP_EXTR_OVERWRITE:
count = php_extract_overwrite(Z_ARRVAL(array_copy), symbol_table);
break;
case EXTR_PREFIX_IF_EXISTS:
case PHP_EXTR_PREFIX_IF_EXISTS:
count = php_extract_prefix_if_exists(Z_ARRVAL(array_copy), symbol_table, prefix);
break;
case EXTR_PREFIX_SAME:
case PHP_EXTR_PREFIX_SAME:
count = php_extract_prefix_same(Z_ARRVAL(array_copy), symbol_table, prefix);
break;
case EXTR_PREFIX_ALL:
case PHP_EXTR_PREFIX_ALL:
count = php_extract_prefix_all(Z_ARRVAL(array_copy), symbol_table, prefix);
break;
case EXTR_PREFIX_INVALID:
case PHP_EXTR_PREFIX_INVALID:
count = php_extract_prefix_invalid(Z_ARRVAL(array_copy), symbol_table, prefix);
break;
default:

View file

@ -2,6 +2,126 @@
/** @generate-class-entries */
/* array.c */
/**
* @var int
* @cvalue PHP_EXTR_OVERWRITE
*/
const EXTR_OVERWRITE = UNKNOWN;
/**
* @var int
* @cvalue PHP_EXTR_SKIP
*/
const EXTR_SKIP = UNKNOWN;
/**
* @var int
* @cvalue PHP_EXTR_PREFIX_SAME
*/
const EXTR_PREFIX_SAME = UNKNOWN;
/**
* @var int
* @cvalue PHP_EXTR_PREFIX_ALL
*/
const EXTR_PREFIX_ALL = UNKNOWN;
/**
* @var int
* @cvalue PHP_EXTR_PREFIX_INVALID
*/
const EXTR_PREFIX_INVALID = UNKNOWN;
/**
* @var int
* @cvalue PHP_EXTR_PREFIX_IF_EXISTS
*/
const EXTR_PREFIX_IF_EXISTS = UNKNOWN;
/**
* @var int
* @cvalue PHP_EXTR_IF_EXISTS
*/
const EXTR_IF_EXISTS = UNKNOWN;
/**
* @var int
* @cvalue PHP_EXTR_REFS
*/
const EXTR_REFS = UNKNOWN;
/**
* @var int
* @cvalue PHP_SORT_ASC
*/
const SORT_ASC = UNKNOWN;
/**
* @var int
* @cvalue PHP_SORT_DESC
*/
const SORT_DESC = UNKNOWN;
/**
* @var int
* @cvalue PHP_SORT_REGULAR
*/
const SORT_REGULAR = UNKNOWN;
/**
* @var int
* @cvalue PHP_SORT_NUMERIC
*/
const SORT_NUMERIC = UNKNOWN;
/**
* @var int
* @cvalue PHP_SORT_STRING
*/
const SORT_STRING = UNKNOWN;
/**
* @var int
* @cvalue PHP_SORT_LOCALE_STRING
*/
const SORT_LOCALE_STRING = UNKNOWN;
/**
* @var int
* @cvalue PHP_SORT_NATURAL
*/
const SORT_NATURAL = UNKNOWN;
/**
* @var int
* @cvalue PHP_SORT_FLAG_CASE
*/
const SORT_FLAG_CASE = UNKNOWN;
/**
* @var int
* @cvalue PHP_CASE_LOWER
*/
const CASE_LOWER = UNKNOWN;
/**
* @var int
* @cvalue PHP_CASE_UPPER
*/
const CASE_UPPER = UNKNOWN;
/**
* @var int
* @cvalue PHP_COUNT_NORMAL
*/
const COUNT_NORMAL = UNKNOWN;
/**
* @var int
* @cvalue PHP_COUNT_RECURSIVE
*/
const COUNT_RECURSIVE = UNKNOWN;
/**
* @var int
* @cvalue ARRAY_FILTER_USE_BOTH
*/
const ARRAY_FILTER_USE_BOTH = UNKNOWN;
/**
* @var int
* @cvalue ARRAY_FILTER_USE_KEY
*/
const ARRAY_FILTER_USE_KEY = UNKNOWN;
/* basic_functions.h */
/**
* @var float
* @cvalue M_E

View file

@ -1,5 +1,5 @@
/* This is a generated file, edit the .stub.php file instead.
* Stub hash: a4c98e83e51a9546a89797b80bdd8771ef0075f9 */
* Stub hash: 51ffd17ba03a2a419b94ef633a621dbf90eb16ee */
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_set_time_limit, 0, 1, _IS_BOOL, 0)
ZEND_ARG_TYPE_INFO(0, seconds, IS_LONG, 0)
@ -3483,6 +3483,28 @@ static const zend_function_entry class_AssertionError_methods[] = {
static void register_basic_functions_symbols(int module_number)
{
REGISTER_LONG_CONSTANT("EXTR_OVERWRITE", PHP_EXTR_OVERWRITE, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("EXTR_SKIP", PHP_EXTR_SKIP, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("EXTR_PREFIX_SAME", PHP_EXTR_PREFIX_SAME, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("EXTR_PREFIX_ALL", PHP_EXTR_PREFIX_ALL, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("EXTR_PREFIX_INVALID", PHP_EXTR_PREFIX_INVALID, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("EXTR_PREFIX_IF_EXISTS", PHP_EXTR_PREFIX_IF_EXISTS, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("EXTR_IF_EXISTS", PHP_EXTR_IF_EXISTS, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("EXTR_REFS", PHP_EXTR_REFS, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("SORT_ASC", PHP_SORT_ASC, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("SORT_DESC", PHP_SORT_DESC, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("SORT_REGULAR", PHP_SORT_REGULAR, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("SORT_NUMERIC", PHP_SORT_NUMERIC, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("SORT_STRING", PHP_SORT_STRING, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("SORT_LOCALE_STRING", PHP_SORT_LOCALE_STRING, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("SORT_NATURAL", PHP_SORT_NATURAL, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("SORT_FLAG_CASE", PHP_SORT_FLAG_CASE, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("CASE_LOWER", PHP_CASE_LOWER, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("CASE_UPPER", PHP_CASE_UPPER, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("COUNT_NORMAL", PHP_COUNT_NORMAL, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("COUNT_RECURSIVE", PHP_COUNT_RECURSIVE, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("ARRAY_FILTER_USE_BOTH", ARRAY_FILTER_USE_BOTH, CONST_CS | CONST_PERSISTENT);
REGISTER_LONG_CONSTANT("ARRAY_FILTER_USE_KEY", ARRAY_FILTER_USE_KEY, CONST_CS | CONST_PERSISTENT);
REGISTER_DOUBLE_CONSTANT("M_E", M_E, CONST_CS | CONST_PERSISTENT);
ZEND_ASSERT(M_E == 2.718281828459045);

View file

@ -34,6 +34,19 @@ PHPAPI zend_long php_count_recursive(HashTable *ht);
PHPAPI bool php_array_data_shuffle(const php_random_algo *algo, php_random_status *status, zval *array);
PHPAPI bool php_array_pick_keys(const php_random_algo *algo, php_random_status *status, zval *input, zend_long num_req, zval *retval, bool silent);
#define PHP_EXTR_OVERWRITE 0
#define PHP_EXTR_SKIP 1
#define PHP_EXTR_PREFIX_SAME 2
#define PHP_EXTR_PREFIX_ALL 3
#define PHP_EXTR_PREFIX_INVALID 4
#define PHP_EXTR_PREFIX_IF_EXISTS 5
#define PHP_EXTR_IF_EXISTS 6
#define PHP_EXTR_REFS 0x100
#define PHP_CASE_LOWER 0
#define PHP_CASE_UPPER 1
#define PHP_SORT_REGULAR 0
#define PHP_SORT_NUMERIC 1
#define PHP_SORT_STRING 2
@ -43,8 +56,8 @@ PHPAPI bool php_array_pick_keys(const php_random_algo *algo, php_random_status *
#define PHP_SORT_NATURAL 6
#define PHP_SORT_FLAG_CASE 8
#define COUNT_NORMAL 0
#define COUNT_RECURSIVE 1
#define PHP_COUNT_NORMAL 0
#define PHP_COUNT_RECURSIVE 1
#define ARRAY_FILTER_USE_BOTH 1
#define ARRAY_FILTER_USE_KEY 2