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) PHP_METHOD(SplObjectStorage, count)
{ {
spl_SplObjectStorage *intern = Z_SPLOBJSTORAGE_P(ZEND_THIS); 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) { if (zend_parse_parameters(ZEND_NUM_ARGS(), "|l", &mode) == FAILURE) {
RETURN_THROWS(); RETURN_THROWS();
} }
if (mode == COUNT_RECURSIVE) { if (mode == PHP_COUNT_RECURSIVE) {
RETURN_LONG(php_count_recursive(&intern->storage)); RETURN_LONG(php_count_recursive(&intern->storage));
} }

View file

@ -44,18 +44,6 @@
#include "ext/random/php_random.h" #include "ext/random/php_random.h"
/* {{{ defines */ /* {{{ 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_NORMAL 1
#define DIFF_KEY 2 #define DIFF_KEY 2
@ -89,34 +77,6 @@ PHP_MINIT_FUNCTION(array) /* {{{ */
{ {
ZEND_INIT_MODULE_GLOBALS(array, php_array_init_globals, NULL); 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; return SUCCESS;
} }
/* }}} */ /* }}} */
@ -661,7 +621,7 @@ PHPAPI zend_long php_count_recursive(HashTable *ht) /* {{{ */
PHP_FUNCTION(count) PHP_FUNCTION(count)
{ {
zval *array; zval *array;
zend_long mode = COUNT_NORMAL; zend_long mode = PHP_COUNT_NORMAL;
zend_long cnt; zend_long cnt;
ZEND_PARSE_PARAMETERS_START(1, 2) ZEND_PARSE_PARAMETERS_START(1, 2)
@ -670,14 +630,14 @@ PHP_FUNCTION(count)
Z_PARAM_LONG(mode) Z_PARAM_LONG(mode)
ZEND_PARSE_PARAMETERS_END(); 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"); zend_argument_value_error(2, "must be either COUNT_NORMAL or COUNT_RECURSIVE");
RETURN_THROWS(); RETURN_THROWS();
} }
switch (Z_TYPE_P(array)) { switch (Z_TYPE_P(array)) {
case IS_ARRAY: case IS_ARRAY:
if (mode != COUNT_RECURSIVE) { if (mode != PHP_COUNT_RECURSIVE) {
cnt = zend_hash_num_elements(Z_ARRVAL_P(array)); cnt = zend_hash_num_elements(Z_ARRVAL_P(array));
} else { } else {
cnt = php_count_recursive(Z_ARRVAL_P(array)); cnt = php_count_recursive(Z_ARRVAL_P(array));
@ -2397,7 +2357,7 @@ PHP_FUNCTION(extract)
{ {
zval *var_array_param; zval *var_array_param;
zend_long extract_refs; zend_long extract_refs;
zend_long extract_type = EXTR_OVERWRITE; zend_long extract_type = PHP_EXTR_OVERWRITE;
zend_string *prefix = NULL; zend_string *prefix = NULL;
zend_long count; zend_long count;
zend_array *symbol_table; zend_array *symbol_table;
@ -2409,18 +2369,18 @@ PHP_FUNCTION(extract)
Z_PARAM_STR(prefix) Z_PARAM_STR(prefix)
ZEND_PARSE_PARAMETERS_END(); ZEND_PARSE_PARAMETERS_END();
extract_refs = (extract_type & EXTR_REFS); extract_refs = (extract_type & PHP_EXTR_REFS);
if (extract_refs) { if (extract_refs) {
SEPARATE_ARRAY(var_array_param); SEPARATE_ARRAY(var_array_param);
} }
extract_type &= 0xff; 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"); zend_argument_value_error(2, "must be a valid extract type");
RETURN_THROWS(); 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"); zend_argument_value_error(3, "is required when using this extract type");
RETURN_THROWS(); RETURN_THROWS();
} }
@ -2441,22 +2401,22 @@ PHP_FUNCTION(extract)
if (extract_refs) { if (extract_refs) {
switch (extract_type) { 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); count = php_extract_ref_if_exists(Z_ARRVAL_P(var_array_param), symbol_table);
break; break;
case EXTR_OVERWRITE: case PHP_EXTR_OVERWRITE:
count = php_extract_ref_overwrite(Z_ARRVAL_P(var_array_param), symbol_table); count = php_extract_ref_overwrite(Z_ARRVAL_P(var_array_param), symbol_table);
break; 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); count = php_extract_ref_prefix_if_exists(Z_ARRVAL_P(var_array_param), symbol_table, prefix);
break; 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); count = php_extract_ref_prefix_same(Z_ARRVAL_P(var_array_param), symbol_table, prefix);
break; 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); count = php_extract_ref_prefix_all(Z_ARRVAL_P(var_array_param), symbol_table, prefix);
break; 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); count = php_extract_ref_prefix_invalid(Z_ARRVAL_P(var_array_param), symbol_table, prefix);
break; break;
default: default:
@ -2468,22 +2428,22 @@ PHP_FUNCTION(extract)
zval array_copy; zval array_copy;
ZVAL_COPY(&array_copy, var_array_param); ZVAL_COPY(&array_copy, var_array_param);
switch (extract_type) { switch (extract_type) {
case EXTR_IF_EXISTS: case PHP_EXTR_IF_EXISTS:
count = php_extract_if_exists(Z_ARRVAL(array_copy), symbol_table); count = php_extract_if_exists(Z_ARRVAL(array_copy), symbol_table);
break; break;
case EXTR_OVERWRITE: case PHP_EXTR_OVERWRITE:
count = php_extract_overwrite(Z_ARRVAL(array_copy), symbol_table); count = php_extract_overwrite(Z_ARRVAL(array_copy), symbol_table);
break; 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); count = php_extract_prefix_if_exists(Z_ARRVAL(array_copy), symbol_table, prefix);
break; break;
case EXTR_PREFIX_SAME: case PHP_EXTR_PREFIX_SAME:
count = php_extract_prefix_same(Z_ARRVAL(array_copy), symbol_table, prefix); count = php_extract_prefix_same(Z_ARRVAL(array_copy), symbol_table, prefix);
break; break;
case EXTR_PREFIX_ALL: case PHP_EXTR_PREFIX_ALL:
count = php_extract_prefix_all(Z_ARRVAL(array_copy), symbol_table, prefix); count = php_extract_prefix_all(Z_ARRVAL(array_copy), symbol_table, prefix);
break; break;
case EXTR_PREFIX_INVALID: case PHP_EXTR_PREFIX_INVALID:
count = php_extract_prefix_invalid(Z_ARRVAL(array_copy), symbol_table, prefix); count = php_extract_prefix_invalid(Z_ARRVAL(array_copy), symbol_table, prefix);
break; break;
default: default:

View file

@ -2,6 +2,126 @@
/** @generate-class-entries */ /** @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 * @var float
* @cvalue M_E * @cvalue M_E

View file

@ -1,5 +1,5 @@
/* This is a generated file, edit the .stub.php file instead. /* 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_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) 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) 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); REGISTER_DOUBLE_CONSTANT("M_E", M_E, CONST_CS | CONST_PERSISTENT);
ZEND_ASSERT(M_E == 2.718281828459045); 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_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); 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_REGULAR 0
#define PHP_SORT_NUMERIC 1 #define PHP_SORT_NUMERIC 1
#define PHP_SORT_STRING 2 #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_NATURAL 6
#define PHP_SORT_FLAG_CASE 8 #define PHP_SORT_FLAG_CASE 8
#define COUNT_NORMAL 0 #define PHP_COUNT_NORMAL 0
#define COUNT_RECURSIVE 1 #define PHP_COUNT_RECURSIVE 1
#define ARRAY_FILTER_USE_BOTH 1 #define ARRAY_FILTER_USE_BOTH 1
#define ARRAY_FILTER_USE_KEY 2 #define ARRAY_FILTER_USE_KEY 2