pike.git
/
src
/
docode.c
version
»
Context lines:
10
20
40
80
file
none
3
pike.git/src/docode.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: docode.c,v 1.
188
2006
/
10
/
28
18
:
16
:
31
grubba Exp $
+
|| $Id: docode.c,v 1.
189
2007
/
03
/
03
15
:
26
:
54
grubba Exp $
*/ #include "global.h" #include "las.h" #include "program.h" #include "pike_types.h" #include "stralloc.h" #include "interpret.h" #include "constants.h" #include "array.h"
pike.git/src/docode.c:1552:
case F_POP_VALUE: { BLOCK_BEGIN; DO_CODE_BLOCK(CAR(n)); BLOCK_END; return 0; } case F_CAST:
-
if
(n->type
==void_
type
_string
)
-
{
+
switch
(n->type
->
type)
{
+
case T_VOID:
DO_CODE_BLOCK(CAR(n)); return 0;
-
}
else
if
(n->type
==
int_type_string)
{
+
case
T_INT:
+
/* FIXME: Integer range? */
tmp1 = do_docode(CAR(n), 0); if(!tmp1) emit0(F_CONST0); else { if(tmp1>1) do_pop(DO_NOT_WARN((INT32)(tmp1-1))); emit0(F_CAST_TO_INT); } return 1;
-
}
else
if
(n->type
==
string_type_string)
{
+
case
T_STRING:
+
/* FIXME: String width? */
tmp1 = do_docode(CAR(n), 0); if(!tmp1) emit0(F_CONST0); else if(tmp1>1) do_pop(DO_NOT_WARN((INT32)(tmp1-1))); emit0(F_CAST_TO_STRING); return 1;
-
}
else
if (compile_type_to_runtime_type(n->type) == PIKE_T_MIXED) {
+
default:
+
if (compile_type_to_runtime_type(n->type) == PIKE_T_MIXED) {
tmp1 = do_docode(CAR(n), 0); if(!tmp1) emit0(F_CONST0); else if(tmp1>1) do_pop(DO_NOT_WARN((INT32)(tmp1-1))); return 1; }
-
+
}
{ struct svalue sv; sv.type = T_TYPE; sv.subtype = 0; sv.u.type = n->type; tmp1 = store_constant(&sv, 0, n->name); emit1(F_CONSTANT, DO_NOT_WARN((INT32)tmp1)); } tmp1=do_docode(CAR(n),0);