pike.git
/
src
/
operators.c
version
»
Context lines:
10
20
40
80
file
none
3
pike.git/src/operators.c:222:
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 { { struct object *o = sp[-1].u.object;
-
struct pike_string *s;
+
struct program *p = o->prog->inherits[SUBTYPEOF(sp[-1])].prog; int f = FIND_LFUN(p, LFUN_CAST); if(f == -1) Pike_error("No cast method in object.\n");
-
REF
_
MAKE
_
CONST_STRING
(
s, "
int
");
-
push
_string
(s
);
+
ref
_
push
_
string(literal
_int_string);
apply_low(o, f, 1); stack_pop_keep_top(); } if(TYPEOF(sp[-1]) != PIKE_T_INT) { if(TYPEOF(sp[-1]) == T_OBJECT && sp[-1].u.object->prog) { struct object *o = sp[-1].u.object; int f = FIND_LFUN(o->prog->inherits[SUBTYPEOF(sp[-1])].prog, LFUN__IS_TYPE); if( f != -1) {
-
struct pike
_
string *s;
-
REF
_
MAKE_CONST_STRING
(
s, "
int
");
-
push
_string
(s
);
+
ref
_
push_
string
(literal
_int_string);
apply_low(o, f, 1); f=!UNSAFE_IS_ZERO(sp-1); pop_stack(); if(f) return; } } Pike_error("Cast failed, wanted int, got %s\n", get_name_of_type(TYPEOF(sp[-1]))); } else if(SUBTYPEOF(sp[-1]) == NUMBER_UNDEFINED)
pike.git/src/operators.c:330:
if(!sp[-1].u.object->prog) { /* Casting a destructed object should be like casting a zero. */ pop_stack(); push_constant_text("0"); } else { { struct object *o = sp[-1].u.object; int f = FIND_LFUN(o->prog->inherits[SUBTYPEOF(sp[-1])].prog, LFUN_CAST); if(f == -1) Pike_error("No cast method in object.\n");
-
push_
constant_text
(
"
string
"
);
+
ref_
push_
string(literal
_string
_string
);
apply_low(o, f, 1); stack_pop_keep_top(); } if(TYPEOF(sp[-1]) != PIKE_T_STRING) { if(TYPEOF(sp[-1])==PIKE_T_INT && SUBTYPEOF(sp[-1])==NUMBER_UNDEFINED) Pike_error("Cannot cast this object to string.\n"); if(TYPEOF(sp[-1]) == T_OBJECT && sp[-1].u.object->prog) { struct object *o = sp[-1].u.object; int f = FIND_LFUN(o->prog->inherits[SUBTYPEOF(sp[-1])].prog, LFUN__IS_TYPE); if( f != -1) {
-
REF
_
MAKE
_
CONST_STRING
(
s, "
string
");
-
push
_string
(s
);
+
ref
_
push
_
string(literal
_string_string);
apply_low(o, 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(TYPEOF(sp[-1]))); } }