pike.git
/
src
/
operators.c
version
»
Context lines:
10
20
40
80
file
none
3
pike.git/src/operators.c:973:
goto loop; case T_OR: if (low_check_soft_cast(s, type->car)) return 1; type = type->cdr; goto loop; case T_NOT: return !low_check_soft_cast(s, type->car); } if ((TYPEOF(*s) == PIKE_T_INT) && !s->u.integer) return 1; if (TYPEOF(*s) == type->type) {
-
if
(type->type
==
PIKE_T_INT
) {
+
switch
(type->type
)
{
+
case
PIKE_T_INT
:
if (((((INT32)CAR_TO_INT(type)) != MIN_INT32) && (s->u.integer < (INT32)CAR_TO_INT(type))) || ((((INT32)CDR_TO_INT(type)) != MAX_INT32) && (s->u.integer > (INT32)CDR_TO_INT(type)))) { return 0; } return 1;
-
}
-
if (type->type ==
PIKE_T_FLOAT
)
return 1;
-
if
(type->type ==
PIKE_T_STRING
) {
+
case PIKE_T_FLOAT:
+
return 1;
+
case
PIKE_T_STRING
:
if ((8<<s->u.string->size_shift) > CAR_TO_INT(type)) { return 0; } return 1;
-
}
-
switch(type->type) {
+
case PIKE_T_OBJECT: { struct program *p; /* Common cases. */ if (!type->cdr) return 1; if (s->u.object->prog->id == CDR_TO_INT(type)) return 1; p = id_to_program(CDR_TO_INT(type)); if (!p) return 1; return implements(s->u.object->prog, p); }