]> granicus.if.org Git - php/commitdiff
Move type-handling functions into ext/standard/type.c (which had
authorjim winstead <jimw@php.net>
Wed, 9 Jan 2002 23:47:46 +0000 (23:47 +0000)
committerjim winstead <jimw@php.net>
Wed, 9 Jan 2002 23:47:46 +0000 (23:47 +0000)
a few otherwise unused functions in it).

ext/standard/basic_functions.c
ext/standard/basic_functions.h
ext/standard/php_standard.h
ext/standard/php_type.h [moved from ext/standard/type.h with 73% similarity]
ext/standard/type.c
main/rfc1867.c

index 5a613dc39a27f92db4ee3e8c2bee27bd374f07dd..1012068e74126ccb095d78064f4d6c36f6c65f45 100644 (file)
@@ -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;
index 7472a6790a9d9ad2ecd5c1463d1f14b7354ab7da..4a0c42cdfa1040be124fe9d14d69ebb4b619cc6c 100644 (file)
@@ -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);
index 0abadca4064f792e490b0423270937f7e9cca543..6667fa6995284ef5858e55e6279fbffdd7f68133 100644 (file)
@@ -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
 
similarity index 73%
rename from ext/standard/type.h
rename to ext/standard/php_type.h
index 2256f230488f77d0c0787cbe9fac68db4b9238fc..f1a9dd9b29e06726ced9903dcf0b8ccbb6de307d 100644 (file)
 
 /* $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
index de5f2a36ba386053468f20c325f95e84936068a4..eb9f3888e7a40c40f136ebcbdf544c0cff367703 100644 (file)
 /* $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);
 }
 /* }}} */
 
index 10dc4e8f840c6c44698d6b6f3b8d84bc2c848391..d1fcb625a6fbcddda54057eee6adeea66ddd81bd 100644 (file)
@@ -31,7 +31,6 @@
 #include "php_globals.h"
 #include "php_variables.h"
 #include "rfc1867.h"
-#include "ext/standard/type.h"
 
 
 #define SAFE_RETURN { \