Skip to content

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

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Aug 24, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions ext/spl/spl_observer.c
Original file line number Diff line number Diff line change
Expand Up @@ -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));
}

Expand Down
78 changes: 19 additions & 59 deletions ext/standard/array.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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;
}
/* }}} */
Expand Down Expand Up @@ -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)
Expand All @@ -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));
Expand Down Expand Up @@ -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;
Expand All @@ -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();
}
Expand All @@ -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:
Expand All @@ -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:
Expand Down
120 changes: 120 additions & 0 deletions ext/standard/basic_functions.stub.php
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
24 changes: 23 additions & 1 deletion ext/standard/basic_functions_arginfo.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 15 additions & 2 deletions ext/standard/php_array.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand Down