pike.git / src / operators.c

version» Context lines:

pike.git/src/operators.c:1:   /*   || This file is part of Pike. For copyright information see COPYRIGHT.   || Pike is distributed under GPL, LGPL and MPL. See the file COPYING   || for more information. - || $Id: operators.c,v 1.196 2004/09/20 12:10:52 mast Exp $ + || $Id: operators.c,v 1.197 2004/09/20 14:59:58 grubba Exp $   */      #include "global.h"   #include <math.h>   #include "interpret.h"   #include "svalue.h"   #include "multiset.h"   #include "mapping.h"   #include "array.h"   #include "stralloc.h"
pike.git/src/operators.c:337:    char buf[200];    switch(sp[-1].type)    {    case PIKE_T_STRING:    return;       case T_OBJECT:    if(!sp[-1].u.object->prog) {    /* Casting a destructed object should be like casting a zero. */    pop_stack(); -  push_int (0); -  } -  -  else { +  push_constant_text("0"); +  } else {    {    struct object *o = sp[-1].u.object;    struct pike_string *s;    int f = FIND_LFUN(o->prog,LFUN_CAST);    if(f == -1)    Pike_error("No cast method in object.\n"); -  REF_MAKE_CONST_STRING(s, "string"); -  push_string(s); +  push_constant_text("string");    apply_low(o, f, 1);    stack_pop_keep_top();    }       if(sp[-1].type != PIKE_T_STRING)    {    if(sp[-1].type == T_OBJECT && sp[-1].u.object->prog)    {    int f=FIND_LFUN(sp[-1].u.object->prog, LFUN__IS_TYPE);    if( f != -1)
pike.git/src/operators.c:372:    push_string(s);    apply_low(sp[-2].u.object, f, 1);    f=!UNSAFE_IS_ZERO(sp-1);    pop_stack();    if(f) return;    }    }    Pike_error("Cast failed, wanted string, got %s\n",    get_name_of_type(sp[-1].type));    } -  return; +     } -  +  return;    -  /* Fall through. */ -  +     case T_INT:    sprintf(buf, "%"PRINTPIKEINT"d", sp[-1].u.integer);    break;       case T_ARRAY:    {    int i;    struct array *a = sp[-1].u.array;    struct pike_string *s;    int shift = 0;
pike.git/src/operators.c:485:    push_int (0);    }       if(sp[-1].type == T_OBJECT)    {    struct object *o = sp[-1].u.object;    struct pike_string *s;    int f = FIND_LFUN(o->prog,LFUN_CAST);    if(f == -1)    Pike_error("No cast method in object.\n"); -  s=describe_type(type); -  push_string(s); -  apply_lfun(o, f, 1); +  push_string(describe_type(type)); +  apply_low(o, f, 1);    stack_pop_keep_top();    }else       switch(run_time_type)    {    default:    Pike_error("Cannot perform cast to that type.\n");       case T_MIXED:    return;