diff options
author | jim winstead <jimw@php.net> | 2002-01-09 23:47:46 +0000 |
---|---|---|
committer | jim winstead <jimw@php.net> | 2002-01-09 23:47:46 +0000 |
commit | e68095972ea476731a485410b72d39088b69f643 (patch) | |
tree | 52486b343058a74bf7115503efeeb7a40dc9d1d7 /ext/standard | |
parent | 98220d2a82d174ce5b157d44fabc255e953eedf2 (diff) | |
download | php-git-e68095972ea476731a485410b72d39088b69f643.tar.gz |
Move type-handling functions into ext/standard/type.c (which had
a few otherwise unused functions in it).
Diffstat (limited to 'ext/standard')
-rw-r--r-- | ext/standard/basic_functions.c | 385 | ||||
-rw-r--r-- | ext/standard/basic_functions.h | 17 | ||||
-rw-r--r-- | ext/standard/php_standard.h | 2 | ||||
-rw-r--r-- | ext/standard/php_type.h (renamed from ext/standard/type.h) | 28 | ||||
-rw-r--r-- | ext/standard/type.c | 401 |
5 files changed, 371 insertions, 462 deletions
diff --git a/ext/standard/basic_functions.c b/ext/standard/basic_functions.c index 5a613dc39a..1012068e74 100644 --- a/ext/standard/basic_functions.c +++ b/ext/standard/basic_functions.c @@ -248,10 +248,6 @@ void test_class_startup(void) function_entry basic_functions[] = { PHP_FE(constant, NULL) - PHP_FE(intval, NULL) - PHP_FE(floatval, NULL) - PHP_FALIAS(doubleval, floatval, NULL) - PHP_FE(strval, NULL) PHP_FE(bin2hex, NULL) PHP_FE(sleep, NULL) PHP_FE(usleep, NULL) @@ -275,8 +271,6 @@ function_entry basic_functions[] = { PHP_FE(checkdate, NULL) PHP_FE(flush, NULL) - PHP_FE(gettype, NULL) - PHP_FE(settype, first_arg_force_ref) PHP_FE(wordwrap, NULL) PHP_FE(htmlspecialchars, NULL) PHP_FE(htmlentities, NULL) @@ -511,21 +505,6 @@ function_entry basic_functions[] = { PHP_FE(get_magic_quotes_gpc, NULL) PHP_FE(get_magic_quotes_runtime, NULL) - PHP_FE(is_null, NULL) - PHP_FE(is_resource, NULL) - PHP_FE(is_bool, NULL) - PHP_FE(is_long, NULL) - PHP_FE(is_float, NULL) - PHP_FALIAS(is_int, is_long, NULL) - PHP_FALIAS(is_integer, is_long, NULL) - PHP_FALIAS(is_double, is_float, NULL) - PHP_FALIAS(is_real, is_float, NULL) - PHP_FE(is_numeric, NULL) - PHP_FE(is_string, NULL) - PHP_FE(is_array, NULL) - PHP_FE(is_object, NULL) - PHP_FE(is_scalar, NULL) - PHP_FE(is_callable, third_arg_force_ref) PHP_FE(import_request_variables, NULL) PHP_FE(error_log, NULL) PHP_FE(call_user_func, NULL) @@ -564,6 +543,29 @@ function_entry basic_functions[] = { PHP_FE(is_uploaded_file, NULL) PHP_FE(move_uploaded_file, NULL) + /* functions from type.c */ + PHP_FE(intval, NULL) + PHP_FE(floatval, NULL) + PHP_FALIAS(doubleval, floatval, NULL) + PHP_FE(strval, NULL) + PHP_FE(gettype, NULL) + PHP_FE(settype, first_arg_force_ref) + PHP_FE(is_null, NULL) + PHP_FE(is_resource, NULL) + PHP_FE(is_bool, NULL) + PHP_FE(is_long, NULL) + PHP_FE(is_float, NULL) + PHP_FALIAS(is_int, is_long, NULL) + PHP_FALIAS(is_integer, is_long, NULL) + PHP_FALIAS(is_double, is_float, NULL) + PHP_FALIAS(is_real, is_float, NULL) + PHP_FE(is_numeric, NULL) + PHP_FE(is_string, NULL) + PHP_FE(is_array, NULL) + PHP_FE(is_object, NULL) + PHP_FE(is_scalar, NULL) + PHP_FE(is_callable, third_arg_force_ref) + /* functions from reg.c */ PHP_FE(ereg, third_arg_force_ref) PHP_FE(ereg_replace, NULL) @@ -1284,71 +1286,6 @@ PHP_FUNCTION(putenv) /* }}} */ #endif -/* {{{ proto int intval(mixed var [, int base]) - Get the integer value of a variable using the optional base for the conversion */ -PHP_FUNCTION(intval) -{ - pval **num, **arg_base; - int base; - - switch (ZEND_NUM_ARGS()) { - case 1: - if (zend_get_parameters_ex(1, &num) == FAILURE) { - WRONG_PARAM_COUNT; - } - base = 10; - break; - - case 2: - if (zend_get_parameters_ex(2, &num, &arg_base) == FAILURE) { - WRONG_PARAM_COUNT; - } - convert_to_long_ex(arg_base); - base = Z_LVAL_PP(arg_base); - break; - - default: - WRONG_PARAM_COUNT; - } - - *return_value = **num; - zval_copy_ctor(return_value); - convert_to_long_base(return_value, base); -} -/* }}} */ - -/* {{{ proto float floatval(mixed var) - Get the float value of a variable */ -PHP_FUNCTION(floatval) -{ - pval **num; - - if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &num) == FAILURE) { - WRONG_PARAM_COUNT; - } - - *return_value = **num; - zval_copy_ctor(return_value); - convert_to_double(return_value); -} -/* }}} */ - -/* {{{ proto string strval(mixed var) - Get the string value of a variable */ -PHP_FUNCTION(strval) -{ - pval **num; - - if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &num) == FAILURE) { - WRONG_PARAM_COUNT; - } - - *return_value = **num; - zval_copy_ctor(return_value); - convert_to_string(return_value); -} -/* }}} */ - /* {{{ proto void flush(void) Flush the output buffer */ PHP_FUNCTION(flush) @@ -1388,111 +1325,6 @@ PHP_FUNCTION(usleep) } /* }}} */ -/* {{{ proto string gettype(mixed var) - Returns the type of the variable */ -PHP_FUNCTION(gettype) -{ - pval **arg; - - if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &arg) == FAILURE) { - WRONG_PARAM_COUNT; - } - - switch (Z_TYPE_PP(arg)) { - case IS_NULL: - RETVAL_STRING("NULL", 1); - break; - - case IS_BOOL: - RETVAL_STRING("boolean", 1); - break; - - case IS_LONG: - RETVAL_STRING("integer", 1); - break; - - case IS_RESOURCE: - RETVAL_STRING("resource", 1); - break; - - case IS_DOUBLE: - RETVAL_STRING("double", 1); - break; - - case IS_STRING: - RETVAL_STRING("string", 1); - break; - - case IS_ARRAY: - RETVAL_STRING("array", 1); - break; - - case IS_OBJECT: - RETVAL_STRING("object", 1); - /* - { - char *result; - int res_len; - - res_len = sizeof("object of type ")-1 + Z_OBJCE_P(arg)->name_length; - result = (char *) emalloc(res_len+1); - sprintf(result, "object of type %s", Z_OBJCE_P(arg)->name); - RETVAL_STRINGL(result, res_len, 0); - } - */ - break; - - default: - RETVAL_STRING("unknown type", 1); - } -} -/* }}} */ - -/* {{{ proto bool settype(mixed var, string type) - Set the type of the variable */ -PHP_FUNCTION(settype) -{ - pval **var, **type; - char *new_type; - - if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &var, &type) == FAILURE) { - WRONG_PARAM_COUNT; - } - - convert_to_string_ex(type); - new_type = Z_STRVAL_PP(type); - - if (!strcasecmp(new_type, "integer")) { - convert_to_long(*var); - } else if (!strcasecmp(new_type, "int")) { - convert_to_long(*var); - } else if (!strcasecmp(new_type, "float")) { - convert_to_double(*var); - } else if (!strcasecmp(new_type, "double")) { /* deprecated */ - convert_to_double(*var); - } else if (!strcasecmp(new_type, "string")) { - convert_to_string(*var); - } else if (!strcasecmp(new_type, "array")) { - convert_to_array(*var); - } else if (!strcasecmp(new_type, "object")) { - convert_to_object(*var); - } else if (!strcasecmp(new_type, "bool")) { - convert_to_boolean(*var); - } else if (!strcasecmp(new_type, "boolean")) { - convert_to_boolean(*var); - } else if (!strcasecmp(new_type, "null")) { - convert_to_null(*var); - } else if (!strcasecmp(new_type, "resource")) { - php_error(E_WARNING, "settype: cannot convert to resource type"); - RETURN_FALSE; - } else { - php_error(E_WARNING, "settype: invalid type"); - RETURN_FALSE; - } - RETVAL_TRUE; -} -/* }}} */ - /* {{{ proto string get_current_user(void) Get the name of the owner of the current PHP script */ PHP_FUNCTION(get_current_user) @@ -1558,145 +1390,6 @@ PHP_FUNCTION(get_magic_quotes_gpc) } /* }}} */ - -void php_is_type(INTERNAL_FUNCTION_PARAMETERS, int type) -{ - pval **arg; - - if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &arg) == FAILURE) { - RETURN_FALSE; - } - - if (Z_TYPE_PP(arg) == type) { - RETURN_TRUE; - } else { - RETURN_FALSE; - } -} - - -/* {{{ proto bool is_null(mixed var) - Returns true if variable is null */ -PHP_FUNCTION(is_null) -{ - php_is_type(INTERNAL_FUNCTION_PARAM_PASSTHRU, IS_NULL); -} -/* }}} */ - -/* {{{ proto bool is_resource(mixed var) - Returns true if variable is a resource */ -PHP_FUNCTION(is_resource) -{ - php_is_type(INTERNAL_FUNCTION_PARAM_PASSTHRU, IS_RESOURCE); -} -/* }}} */ - -/* {{{ proto bool is_bool(mixed var) - Returns true if variable is a boolean */ -PHP_FUNCTION(is_bool) -{ - php_is_type(INTERNAL_FUNCTION_PARAM_PASSTHRU, IS_BOOL); -} -/* }}} */ - -/* {{{ proto bool is_long(mixed var) - Returns true if variable is a long (integer) */ -PHP_FUNCTION(is_long) -{ - php_is_type(INTERNAL_FUNCTION_PARAM_PASSTHRU, IS_LONG); -} -/* }}} */ - -/* {{{ proto bool is_float(mixed var) - Returns true if variable is float point*/ -PHP_FUNCTION(is_float) -{ - php_is_type(INTERNAL_FUNCTION_PARAM_PASSTHRU, IS_DOUBLE); -} -/* }}} */ - -/* {{{ proto bool is_string(mixed var) - Returns true if variable is a string */ -PHP_FUNCTION(is_string) -{ - php_is_type(INTERNAL_FUNCTION_PARAM_PASSTHRU, IS_STRING); -} -/* }}} */ - -/* {{{ proto bool is_array(mixed var) - Returns true if variable is an array */ -PHP_FUNCTION(is_array) -{ - php_is_type(INTERNAL_FUNCTION_PARAM_PASSTHRU, IS_ARRAY); -} -/* }}} */ - -/* {{{ proto bool is_object(mixed var) - Returns true if variable is an object */ -PHP_FUNCTION(is_object) -{ - php_is_type(INTERNAL_FUNCTION_PARAM_PASSTHRU, IS_OBJECT); -} -/* }}} */ - -/* {{{ proto bool is_numeric(mixed value) - Returns true if value is a number or a numeric string */ -PHP_FUNCTION(is_numeric) -{ - zval **arg; - int result; - - if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &arg) == FAILURE) { - WRONG_PARAM_COUNT; - } - - switch (Z_TYPE_PP(arg)) { - case IS_LONG: - case IS_DOUBLE: - RETURN_TRUE; - break; - - case IS_STRING: - result = is_numeric_string(Z_STRVAL_PP(arg), Z_STRLEN_PP(arg), NULL, NULL, 0); - if (result == IS_LONG || result == IS_DOUBLE) { - RETURN_TRUE; - } else { - RETURN_FALSE; - } - break; - - default: - RETURN_FALSE; - break; - } -} -/* }}} */ - -/* {{{ proto bool is_scalar(mixed value) - Returns true if value is a scalar */ -PHP_FUNCTION(is_scalar) -{ - zval **arg; - - if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &arg) == FAILURE) { - WRONG_PARAM_COUNT; - } - - switch (Z_TYPE_PP(arg)) { - case IS_BOOL: - case IS_DOUBLE: - case IS_LONG: - case IS_STRING: - RETURN_TRUE; - break; - - default: - RETURN_FALSE; - break; - } -} -/* }}} */ - /* 1st arg = error message 2nd arg = error option @@ -2759,38 +2452,6 @@ PHP_FUNCTION(parse_ini_file) } /* }}} */ -/* {{{ proto bool is_callable(mixed var [, bool syntax_only [, string callable_name]]) - ??? */ -PHP_FUNCTION(is_callable) -{ - zval **var, **syntax_only, **callable_name; - char *name; - zend_bool retval; - zend_bool syntax = 0; - int argc=ZEND_NUM_ARGS(); - - if (argc < 1 || argc > 3 || zend_get_parameters_ex(argc, &var, &syntax_only, &callable_name) == FAILURE) { - WRONG_PARAM_COUNT; - } - - if (argc > 1) { - convert_to_boolean_ex(syntax_only); - syntax = Z_BVAL_PP(syntax_only); - } - - if (argc > 2) { - retval = zend_is_callable(*var, syntax, &name); - zval_dtor(*callable_name); - ZVAL_STRING(*callable_name, name, 0); - } else { - retval = zend_is_callable(*var, syntax, NULL); - } - - RETURN_BOOL(retval); -} -/* }}} */ - - static int copy_request_variable(void *pDest, int num_args, va_list args, zend_hash_key *hash_key) { char *prefix, *new_key; diff --git a/ext/standard/basic_functions.h b/ext/standard/basic_functions.h index 7472a6790a..4a0c42cdfa 100644 --- a/ext/standard/basic_functions.h +++ b/ext/standard/basic_functions.h @@ -39,15 +39,10 @@ PHP_RSHUTDOWN_FUNCTION(basic); PHP_MINFO_FUNCTION(basic); PHP_FUNCTION(constant); -PHP_FUNCTION(intval); -PHP_FUNCTION(floatval); -PHP_FUNCTION(strval); PHP_FUNCTION(toggle_short_open_tag); PHP_FUNCTION(sleep); PHP_FUNCTION(usleep); PHP_FUNCTION(flush); -PHP_FUNCTION(gettype); -PHP_FUNCTION(settype); PHP_FUNCTION(ip2long); PHP_FUNCTION(long2ip); @@ -63,18 +58,6 @@ PHP_FUNCTION(set_magic_quotes_runtime); PHP_FUNCTION(get_magic_quotes_runtime); PHP_FUNCTION(get_magic_quotes_gpc); -void php_is_type(INTERNAL_FUNCTION_PARAMETERS, int type); -PHP_FUNCTION(is_null); -PHP_FUNCTION(is_resource); -PHP_FUNCTION(is_bool); -PHP_FUNCTION(is_long); -PHP_FUNCTION(is_float); -PHP_FUNCTION(is_numeric); -PHP_FUNCTION(is_string); -PHP_FUNCTION(is_array); -PHP_FUNCTION(is_object); -PHP_FUNCTION(is_scalar); -PHP_FUNCTION(is_callable); PHP_FUNCTION(import_request_variables); PHP_FUNCTION(error_log); diff --git a/ext/standard/php_standard.h b/ext/standard/php_standard.h index 0abadca406..6667fa6995 100644 --- a/ext/standard/php_standard.h +++ b/ext/standard/php_standard.h @@ -47,7 +47,6 @@ #include "uniqid.h" #include "php_var.h" #include "quot_print.h" -#include "type.h" #include "dl.h" #include "php_crypt.h" #include "head.h" @@ -58,6 +57,7 @@ #include "php_assert.h" #include "php_versioning.h" #include "php_ftok.h" +#include "php_type.h" #define phpext_standard_ptr basic_functions_module_ptr diff --git a/ext/standard/type.h b/ext/standard/php_type.h index 2256f23048..f1a9dd9b29 100644 --- a/ext/standard/type.h +++ b/ext/standard/php_type.h @@ -18,16 +18,24 @@ /* $Id$ */ -#ifndef TYPE_H -#define TYPE_H +#ifndef PHP_TYPE_H +#define PHP_TYPE_H -extern int php_check_type(char *str); -extern int php_check_ident_type(char *str); -extern char *php_get_ident_index(char *str); - -#define GPC_REGULAR 0x1 -#define GPC_INDEXED_ARRAY 0x2 -#define GPC_NON_INDEXED_ARRAY 0x4 -#define GPC_ARRAY (GPC_INDEXED_ARRAY | GPC_NON_INDEXED_ARRAY) +PHP_FUNCTION(intval); +PHP_FUNCTION(floatval); +PHP_FUNCTION(strval); +PHP_FUNCTION(gettype); +PHP_FUNCTION(settype); +PHP_FUNCTION(is_null); +PHP_FUNCTION(is_resource); +PHP_FUNCTION(is_bool); +PHP_FUNCTION(is_long); +PHP_FUNCTION(is_float); +PHP_FUNCTION(is_numeric); +PHP_FUNCTION(is_string); +PHP_FUNCTION(is_array); +PHP_FUNCTION(is_object); +PHP_FUNCTION(is_scalar); +PHP_FUNCTION(is_callable); #endif diff --git a/ext/standard/type.c b/ext/standard/type.c index de5f2a36ba..eb9f3888e7 100644 --- a/ext/standard/type.c +++ b/ext/standard/type.c @@ -19,86 +19,343 @@ /* $Id$ */ #include "php.h" -#include "type.h" -/* {{{ php_check_type - * Determines if 'str' is an integer (long), real number or a string - * - * Note that leading zeroes automatically force a STRING type - */ -int php_check_type(char *str) -{ - char *s; - int type = IS_LONG; - - s = str; - if (*s == '0' && *(s + 1) && *(s + 1) != '.') - return (IS_STRING); - if (*s == '+' || *s == '-' || (*s >= '0' && *s <= '9') || *s == '.') { - if (*s == '.') - type = IS_DOUBLE; - s++; - while (*s) { - if (*s >= '0' && *s <= '9') { - s++; - continue; - } else if (*s == '.' && type == IS_LONG) { - type = IS_DOUBLE; - s++; - continue; - } else - return (IS_STRING); - } - } else - return (IS_STRING); - - return (type); -} /* php_check_type */ -/* }}} */ - -/* {{{ php_check_ident_type - * 0 - simple variable - * 1 - non-index array - * 2 - index array - */ -int php_check_ident_type(char *str) +/* {{{ proto string gettype(mixed var) + Returns the type of the variable */ +PHP_FUNCTION(gettype) { - char *s; + pval **arg; - if (!(s = (char *) strchr(str, '['))) - return (GPC_REGULAR); - s++; - while (*s == ' ' || *s == '\t' || *s == '\n') { - s++; + if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &arg) == FAILURE) { + WRONG_PARAM_COUNT; } - if (*s == ']') { - return (GPC_NON_INDEXED_ARRAY); + + switch (Z_TYPE_PP(arg)) { + case IS_NULL: + RETVAL_STRING("NULL", 1); + break; + + case IS_BOOL: + RETVAL_STRING("boolean", 1); + break; + + case IS_LONG: + RETVAL_STRING("integer", 1); + break; + + case IS_RESOURCE: + RETVAL_STRING("resource", 1); + break; + + case IS_DOUBLE: + RETVAL_STRING("double", 1); + break; + + case IS_STRING: + RETVAL_STRING("string", 1); + break; + + case IS_ARRAY: + RETVAL_STRING("array", 1); + break; + + case IS_OBJECT: + RETVAL_STRING("object", 1); + /* + { + char *result; + int res_len; + + res_len = sizeof("object of type ")-1 + Z_OBJCE_P(arg)->name_length; + result = (char *) emalloc(res_len+1); + sprintf(result, "object of type %s", Z_OBJCE_P(arg)->name); + RETVAL_STRINGL(result, res_len, 0); + } + */ + break; + + default: + RETVAL_STRING("unknown type", 1); } - return (GPC_INDEXED_ARRAY); } /* }}} */ -/* {{{ php_get_ident_index - */ -char *php_get_ident_index(char *str) -{ - char *temp; - char *s, *t; - char o; - - temp = emalloc(strlen(str)); - temp[0] = '\0'; - s = (char *) strchr(str, '['); - if (s) { - t = (char *) strrchr(str, ']'); - if (t) { - o = *t; - *t = '\0'; - strcpy(temp, s + 1); - *t = o; - } - } - return (temp); +/* {{{ proto bool settype(mixed var, string type) + Set the type of the variable */ +PHP_FUNCTION(settype) +{ + pval **var, **type; + char *new_type; + + if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &var, &type) == FAILURE) { + WRONG_PARAM_COUNT; + } + + convert_to_string_ex(type); + new_type = Z_STRVAL_PP(type); + + if (!strcasecmp(new_type, "integer")) { + convert_to_long(*var); + } else if (!strcasecmp(new_type, "int")) { + convert_to_long(*var); + } else if (!strcasecmp(new_type, "float")) { + convert_to_double(*var); + } else if (!strcasecmp(new_type, "double")) { /* deprecated */ + convert_to_double(*var); + } else if (!strcasecmp(new_type, "string")) { + convert_to_string(*var); + } else if (!strcasecmp(new_type, "array")) { + convert_to_array(*var); + } else if (!strcasecmp(new_type, "object")) { + convert_to_object(*var); + } else if (!strcasecmp(new_type, "bool")) { + convert_to_boolean(*var); + } else if (!strcasecmp(new_type, "boolean")) { + convert_to_boolean(*var); + } else if (!strcasecmp(new_type, "null")) { + convert_to_null(*var); + } else if (!strcasecmp(new_type, "resource")) { + php_error(E_WARNING, "settype: cannot convert to resource type"); + RETURN_FALSE; + } else { + php_error(E_WARNING, "settype: invalid type"); + RETURN_FALSE; + } + RETVAL_TRUE; +} +/* }}} */ + +/* {{{ proto int intval(mixed var [, int base]) + Get the integer value of a variable using the optional base for the conversion */ +PHP_FUNCTION(intval) +{ + pval **num, **arg_base; + int base; + + switch (ZEND_NUM_ARGS()) { + case 1: + if (zend_get_parameters_ex(1, &num) == FAILURE) { + WRONG_PARAM_COUNT; + } + base = 10; + break; + + case 2: + if (zend_get_parameters_ex(2, &num, &arg_base) == FAILURE) { + WRONG_PARAM_COUNT; + } + convert_to_long_ex(arg_base); + base = Z_LVAL_PP(arg_base); + break; + + default: + WRONG_PARAM_COUNT; + } + + *return_value = **num; + zval_copy_ctor(return_value); + convert_to_long_base(return_value, base); +} +/* }}} */ + +/* {{{ proto float floatval(mixed var) + Get the float value of a variable */ +PHP_FUNCTION(floatval) +{ + pval **num; + + if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &num) == FAILURE) { + WRONG_PARAM_COUNT; + } + + *return_value = **num; + zval_copy_ctor(return_value); + convert_to_double(return_value); +} +/* }}} */ + +/* {{{ proto string strval(mixed var) + Get the string value of a variable */ +PHP_FUNCTION(strval) +{ + pval **num; + + if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &num) == FAILURE) { + WRONG_PARAM_COUNT; + } + + *return_value = **num; + zval_copy_ctor(return_value); + convert_to_string(return_value); +} +/* }}} */ + +static void php_is_type(INTERNAL_FUNCTION_PARAMETERS, int type) +{ + pval **arg; + + if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &arg) == FAILURE) { + RETURN_FALSE; + } + + if (Z_TYPE_PP(arg) == type) { + RETURN_TRUE; + } else { + RETURN_FALSE; + } +} + + +/* {{{ proto bool is_null(mixed var) + Returns true if variable is null */ +PHP_FUNCTION(is_null) +{ + php_is_type(INTERNAL_FUNCTION_PARAM_PASSTHRU, IS_NULL); +} +/* }}} */ + +/* {{{ proto bool is_resource(mixed var) + Returns true if variable is a resource */ +PHP_FUNCTION(is_resource) +{ + php_is_type(INTERNAL_FUNCTION_PARAM_PASSTHRU, IS_RESOURCE); +} +/* }}} */ + +/* {{{ proto bool is_bool(mixed var) + Returns true if variable is a boolean */ +PHP_FUNCTION(is_bool) +{ + php_is_type(INTERNAL_FUNCTION_PARAM_PASSTHRU, IS_BOOL); +} +/* }}} */ + +/* {{{ proto bool is_long(mixed var) + Returns true if variable is a long (integer) */ +PHP_FUNCTION(is_long) +{ + php_is_type(INTERNAL_FUNCTION_PARAM_PASSTHRU, IS_LONG); +} +/* }}} */ + +/* {{{ proto bool is_float(mixed var) + Returns true if variable is float point*/ +PHP_FUNCTION(is_float) +{ + php_is_type(INTERNAL_FUNCTION_PARAM_PASSTHRU, IS_DOUBLE); +} +/* }}} */ + +/* {{{ proto bool is_string(mixed var) + Returns true if variable is a string */ +PHP_FUNCTION(is_string) +{ + php_is_type(INTERNAL_FUNCTION_PARAM_PASSTHRU, IS_STRING); +} +/* }}} */ + +/* {{{ proto bool is_array(mixed var) + Returns true if variable is an array */ +PHP_FUNCTION(is_array) +{ + php_is_type(INTERNAL_FUNCTION_PARAM_PASSTHRU, IS_ARRAY); +} +/* }}} */ + +/* {{{ proto bool is_object(mixed var) + Returns true if variable is an object */ +PHP_FUNCTION(is_object) +{ + php_is_type(INTERNAL_FUNCTION_PARAM_PASSTHRU, IS_OBJECT); +} +/* }}} */ + +/* {{{ proto bool is_numeric(mixed value) + Returns true if value is a number or a numeric string */ +PHP_FUNCTION(is_numeric) +{ + zval **arg; + int result; + + if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &arg) == FAILURE) { + WRONG_PARAM_COUNT; + } + + switch (Z_TYPE_PP(arg)) { + case IS_LONG: + case IS_DOUBLE: + RETURN_TRUE; + break; + + case IS_STRING: + result = is_numeric_string(Z_STRVAL_PP(arg), Z_STRLEN_PP(arg), NULL, NULL, 0); + if (result == IS_LONG || result == IS_DOUBLE) { + RETURN_TRUE; + } else { + RETURN_FALSE; + } + break; + + default: + RETURN_FALSE; + break; + } +} +/* }}} */ + +/* {{{ proto bool is_scalar(mixed value) + Returns true if value is a scalar */ +PHP_FUNCTION(is_scalar) +{ + zval **arg; + + if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &arg) == FAILURE) { + WRONG_PARAM_COUNT; + } + + switch (Z_TYPE_PP(arg)) { + case IS_BOOL: + case IS_DOUBLE: + case IS_LONG: + case IS_STRING: + RETURN_TRUE; + break; + + default: + RETURN_FALSE; + break; + } +} +/* }}} */ + +/* {{{ proto bool is_callable(mixed var [, bool syntax_only [, string callable_name]]) + Returns true if var is callable. */ +PHP_FUNCTION(is_callable) +{ + zval **var, **syntax_only, **callable_name; + char *name; + zend_bool retval; + zend_bool syntax = 0; + int argc=ZEND_NUM_ARGS(); + + if (argc < 1 || argc > 3 || zend_get_parameters_ex(argc, &var, &syntax_only, &callable_name) == FAILURE) { + WRONG_PARAM_COUNT; + } + + if (argc > 1) { + convert_to_boolean_ex(syntax_only); + syntax = Z_BVAL_PP(syntax_only); + } + + if (argc > 2) { + retval = zend_is_callable(*var, syntax, &name); + zval_dtor(*callable_name); + ZVAL_STRING(*callable_name, name, 0); + } else { + retval = zend_is_callable(*var, syntax, NULL); + } + + RETURN_BOOL(retval); } /* }}} */ |