pike.git
/
src
/
operators.c
version
»
Context lines:
10
20
40
80
file
none
3
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;