cvs: php4 /ext/standard basic_functions.c basic_functions.h php_standard.h php_type.h type.c type.h /main rfc1867.c

From: Date: Wed, 09 Jan 2002 23:47:47 +0000
Subject: cvs: php4 /ext/standard basic_functions.c basic_functions.h php_standard.h php_type.h type.c type.h /main rfc1867.c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-9008@lists.php.net to get a copy of this message
jimw Wed Jan 9 18:47:47 2002 EDT Added files: /php4/ext/standard php_type.h Removed files: /php4/ext/standard type.h Modified files: /php4/main rfc1867.c /php4/ext/standard basic_functions.c basic_functions.h php_standard.h type.c Log: Move type-handling functions into ext/standard/type.c (which had a few otherwise unused functions in it).

Index: php4/main/rfc1867.c diff -u php4/main/rfc1867.c:1.93 php4/main/rfc1867.c:1.94 --- php4/main/rfc1867.c:1.93 Fri Jan 4 17:57:36 2002 +++ php4/main/rfc1867.c Wed Jan 9 18:47:18 2002 @@ -16,7 +16,7 @@ | Jani Taskinen <sniper@php.net> | +----------------------------------------------------------------------+ */ -/* $Id: rfc1867.c,v 1.93 2002/01/04 22:57:36 jon Exp $ */ +/* $Id: rfc1867.c,v 1.94 2002/01/09 23:47:18 jimw Exp $ */ /* * This product includes software developed by the Apache Group @@ -31,7 +31,6 @@ #include "php_globals.h" #include "php_variables.h" #include "rfc1867.h" -#include "ext/standard/type.h" #define SAFE_RETURN { \ Index: php4/ext/standard/basic_functions.c diff -u php4/ext/standard/basic_functions.c:1.436 php4/ext/standard/basic_functions.c:1.437 --- php4/ext/standard/basic_functions.c:1.436 Sat Jan 5 02:54:48 2002 +++ php4/ext/standard/basic_functions.c Wed Jan 9 18:47:18 2002 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: basic_functions.c,v 1.436 2002/01/05 07:54:48 eschmid Exp $ */ +/* $Id: basic_functions.c,v 1.437 2002/01/09 23:47:18 jimw Exp $ */ #include "php.h" #include "php_main.h" @@ -248,10 +248,6 @@ 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 @@ 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 @@ 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 @@ 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 @@ /* }}} */ #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 @@ } /* }}} */ -/* {{{ 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 @@ } /* }}} */ - -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 @@ -2758,38 +2451,6 @@ zend_parse_ini_file(&fh, 0, ini_parser_cb, return_value); } /* }}} */ - -/* {{{ 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) { Index: php4/ext/standard/basic_functions.h diff -u php4/ext/standard/basic_functions.h:1.101 php4/ext/standard/basic_functions.h:1.102 --- php4/ext/standard/basic_functions.h:1.101 Sat Dec 29 17:59:40 2001 +++ php4/ext/standard/basic_functions.h Wed Jan 9 18:47:41 2002 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: basic_functions.h,v 1.101 2001/12/29 22:59:40 derick Exp $ */ +/* $Id: basic_functions.h,v 1.102 2002/01/09 23:47:41 jimw Exp $ */ #ifndef BASIC_FUNCTIONS_H #define BASIC_FUNCTIONS_H @@ -39,15 +39,10 @@ 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(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); Index: php4/ext/standard/php_standard.h diff -u php4/ext/standard/php_standard.h:1.12 php4/ext/standard/php_standard.h:1.13 --- php4/ext/standard/php_standard.h:1.12 Tue Dec 11 10:30:35 2001 +++ php4/ext/standard/php_standard.h Wed Jan 9 18:47:41 2002 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_standard.h,v 1.12 2001/12/11 15:30:35 sebastian Exp $ */ +/* $Id: php_standard.h,v 1.13 2002/01/09 23:47:41 jimw Exp $ */ #include "basic_functions.h" #include "php_math.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 Index: php4/ext/standard/type.c diff -u php4/ext/standard/type.c:1.13 php4/ext/standard/type.c:1.14 --- php4/ext/standard/type.c:1.13 Tue Dec 11 10:30:37 2001 +++ php4/ext/standard/type.c Wed Jan 9 18:47:43 2002 @@ -16,89 +16,346 @@ +----------------------------------------------------------------------+ */ -/* $Id: type.c,v 1.13 2001/12/11 15:30:37 sebastian Exp $ */ +/* $Id: type.c,v 1.14 2002/01/09 23:47:43 jimw Exp $ */ #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) -{ - char *s; - - if (!(s = (char *) strchr(str, '['))) - return (GPC_REGULAR); - s++; - while (*s == ' ' || *s == '\t' || *s == '\n') { - s++; - } - if (*s == ']') { - return (GPC_NON_INDEXED_ARRAY); - } - 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; - } +/* {{{ 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; } - return (temp); + + 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 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); } /* }}} */ Index: php4/ext/standard/php_type.h +++ php4/ext/standard/php_type.h /* +----------------------------------------------------------------------+ | PHP Version 4 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2002 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 2.02 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | | available at through the world-wide-web at | | http://www.php.net/license/2_02.txt. | | If you did not receive a copy of the PHP license and are unable to | | obtain it through the world-wide-web, please send a note to | | license@php.net so we can mail you a copy immediately. | +----------------------------------------------------------------------+ | Authors: Rasmus Lerdorf <rasmus@lerdorf.on.ca> | +----------------------------------------------------------------------+ */ /* $Id: php_type.h,v 1.1 2002/01/09 23:47:43 jimw Exp $ */ #ifndef PHP_TYPE_H #define PHP_TYPE_H 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
« previous php.cvs (#9008) next »