pike.git / src / operators.c

version» Context lines:

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);    }