summaryrefslogtreecommitdiff
path: root/Zend
diff options
context:
space:
mode:
authorAndi Gutmans <andi@php.net>2001-04-28 18:20:46 +0000
committerAndi Gutmans <andi@php.net>2001-04-28 18:20:46 +0000
commit26c06df3214940d087ea80e16c1567a9dabc9255 (patch)
treea8c0b99791c785c8f58c985082434a85c57af00b /Zend
parent1df2271224e912d63d70b578945f02c02f4045cb (diff)
downloadphp-git-26c06df3214940d087ea80e16c1567a9dabc9255.tar.gz
- Move all cases into switch().
Diffstat (limited to 'Zend')
-rw-r--r--Zend/zend_operators.c142
1 files changed, 78 insertions, 64 deletions
diff --git a/Zend/zend_operators.c b/Zend/zend_operators.c
index b02a727d31..2a11174e47 100644
--- a/Zend/zend_operators.c
+++ b/Zend/zend_operators.c
@@ -108,66 +108,82 @@ ZEND_API double zend_string_to_double(const char *number, zend_uint length)
ZEND_API void convert_scalar_to_number(zval *op)
{
- char *strval;
-
- if (op->type == IS_STRING) {
- strval = op->value.str.val;
- switch ((op->type=is_numeric_string(strval, op->value.str.len, &op->value.lval, &op->value.dval))) {
- case IS_DOUBLE:
- case IS_LONG:
- break;
-#if 0&&WITH_BCMATH
- case FLAG_IS_BC:
- op->type = IS_DOUBLE; /* may have lost significant digits */
- break;
+ switch (op->type) {
+ case IS_STRING:
+ {
+ char *strval;
+
+ strval = op->value.str.val;
+ switch ((op->type=is_numeric_string(strval, op->value.str.len, &op->value.lval, &op->value.dval))) {
+ case IS_DOUBLE:
+ case IS_LONG:
+ break;
+#if 0 && WITH_BCMATH
+ case FLAG_IS_BC:
+ op->type = IS_DOUBLE; /* may have lost significant digits */
+ break;
#endif
- default:
- op->value.lval = strtol(op->value.str.val, NULL, 10);
- op->type = IS_LONG;
+ default:
+ op->value.lval = strtol(op->value.str.val, NULL, 10);
+ op->type = IS_LONG;
+ break;
+ }
+ STR_FREE(strval);
break;
- }
- STR_FREE(strval);
- } else if (op->type==IS_BOOL) {
- op->type = IS_LONG;
- } else if (op->type==IS_RESOURCE) {
- zend_list_delete(op->value.lval);
- op->type = IS_LONG;
- } else if (op->type==IS_NULL) {
- op->type = IS_LONG;
- op->value.lval = 0;
+ }
+ case IS_BOOL:
+ op->type = IS_LONG;
+ break;
+ case IS_RESOURCE:
+ zend_list_delete(op->value.lval);
+ op->type = IS_LONG;
+ break;
+ case IS_NULL:
+ op->type = IS_LONG;
+ op->value.lval = 0;
+ break;
}
}
#define zendi_convert_scalar_to_number(op, holder, result) \
if (op==result) { \
convert_scalar_to_number(op); \
- } else if ((op)->type == IS_STRING) { \
- switch (((holder).type=is_numeric_string((op)->value.str.val, (op)->value.str.len, &(holder).value.lval, &(holder).value.dval))) { \
- case IS_DOUBLE: \
- case IS_LONG: \
- break; \
- case FLAG_IS_BC: \
- (holder).type = IS_DOUBLE; /* may have lost significant digits */ \
- break; \
- default: \
- (holder).value.lval = strtol((op)->value.str.val, NULL, 10); \
- (holder).type = IS_LONG; \
- break; \
- } \
- (op) = &(holder); \
- } else if ((op)->type==IS_BOOL) { \
- (holder).value.lval = (op)->value.lval; \
- (holder).type = IS_LONG; \
- (op) = &(holder); \
- } else if ((op)->type==IS_RESOURCE) { \
- zend_list_delete((op)->value.lval); \
- (holder).value.lval = (op)->value.lval; \
- (holder).type = IS_LONG; \
- (op) = &(holder); \
- } else if ((op)->type==IS_NULL) { \
- (holder).value.lval = 0; \
- (holder).type = IS_LONG; \
- (op) = &(holder); \
+ } else { \
+ switch ((op)->type) { \
+ case IS_STRING: \
+ { \
+ switch (((holder).type=is_numeric_string((op)->value.str.val, (op)->value.str.len, &(holder).value.lval, &(holder).value.dval))) { \
+ case IS_DOUBLE: \
+ case IS_LONG: \
+ break; \
+ case FLAG_IS_BC: \
+ (holder).type = IS_DOUBLE; /* may have lost significant digits */ \
+ break; \
+ default: \
+ (holder).value.lval = strtol((op)->value.str.val, NULL, 10); \
+ (holder).type = IS_LONG; \
+ break; \
+ } \
+ (op) = &(holder); \
+ break; \
+ } \
+ case IS_BOOL: \
+ (holder).value.lval = (op)->value.lval; \
+ (holder).type = IS_LONG; \
+ (op) = &(holder); \
+ break; \
+ case IS_RESOURCE: \
+ zend_list_delete((op)->value.lval); \
+ (holder).value.lval = (op)->value.lval; \
+ (holder).type = IS_LONG; \
+ (op) = &(holder); \
+ break; \
+ case IS_NULL: \
+ (holder).value.lval = 0; \
+ (holder).type = IS_LONG; \
+ (op) = &(holder); \
+ break; \
+ } \
}
@@ -175,15 +191,6 @@ ZEND_API void convert_scalar_to_number(zval *op)
#define zendi_convert_to_long(op, holder, result) \
if (op==result) { \
convert_to_long(op); \
- } else if ((op)->type==IS_BOOL) { \
- (holder).value.lval = (op)->value.lval; \
- (holder).type = IS_LONG; \
- (op) = &(holder); \
- } else if ((op)->type==IS_RESOURCE) { \
- zend_list_delete((op)->value.lval); \
- (holder).value.lval = (op)->value.lval; \
- (holder).type = IS_LONG; \
- (op) = &(holder); \
} else if ((op)->type != IS_LONG) { \
switch ((op)->type) { \
case IS_NULL: \
@@ -193,16 +200,23 @@ ZEND_API void convert_scalar_to_number(zval *op)
(holder).value.lval = (long) (op)->value.dval; \
break; \
case IS_STRING: \
- (holder).value.lval = strtol((op)->value.str.val, NULL, 10); \
+ (holder).value.lval = strtol((op)->value.str.val, NULL, 10); \
break; \
case IS_ARRAY: \
- (holder).value.lval = (zend_hash_num_elements((op)->value.ht)?1:0); \
+ (holder).value.lval = (zend_hash_num_elements((op)->value.ht)?1:0); \
break; \
case IS_OBJECT: \
(holder).value.lval = (zend_hash_num_elements((op)->value.obj.properties)?1:0); \
break; \
+ case IS_RESOURCE: \
+ zend_list_delete((op)->value.lval); \
+ (holder).value.lval = (op)->value.lval; \
+ break; \
+ case IS_BOOL: \
+ (holder).value.lval = (op)->value.lval; \
+ break; \
default: \
- zend_error(E_WARNING, "Cannot convert to ordinal value"); \
+ zend_error(E_WARNING, "Cannot convert to ordinal value"); \
(holder).value.lval = 0; \
break; \
} \