pike.git / src / operators.c

version» Context lines:

pike.git/src/operators.c:1:   /*\   ||| This file a part of Pike, and is copyright by Fredrik Hubinette   ||| Pike is distributed as GPL (General Public License)   ||| See the files COPYING and DISCLAIMER for more information.   \*/   /**/   #include "global.h"   #include <math.h> - RCSID("$Id: operators.c,v 1.129 2001/03/04 19:27:18 mirar Exp $"); + RCSID("$Id: operators.c,v 1.130 2001/03/17 16:37:42 grubba Exp $");   #include "interpret.h"   #include "svalue.h"   #include "multiset.h"   #include "mapping.h"   #include "array.h"   #include "stralloc.h"   #include "opcodes.h"   #include "operators.h"   #include "language.h"   #include "pike_memory.h"
pike.git/src/operators.c:3402:    OPT_SIDE_EFFECT|OPT_TRY_OPTIMIZE);       /* function(mixed...:int) */    ADD_EFUN2("`==",f_eq,    tOr5(tFuncV(tOr(tInt,tFloat) tOr(tInt,tFloat),    tOr(tInt,tFloat),tInt01),    tFuncV(tSetvar(0,tOr4(tString,tMapping,tMultiset,tArray))    tVar(0), tVar(0),tInt01),    tFuncV(tOr3(tObj,tProgram,tFunction) tMix,tMix,tInt01),    tFuncV(tMix tOr3(tObj,tProgram,tFunction),tMix,tInt01), -  tFuncV(tType tType,tOr3(tProgram,tFunction,tType),tInt01)), +  tFuncV(tType(tMix) tType(tMix), +  tOr3(tProgram,tFunction,tType(tMix)),tInt01)),    OPT_WEAK_TYPE|OPT_TRY_OPTIMIZE,optimize_eq,generate_comparison);    /* function(mixed...:int) */    ADD_EFUN2("`!=",f_ne,    tOr5(tFuncV(tOr(tInt,tFloat) tOr(tInt,tFloat),    tOr(tInt,tFloat),tInt01),    tFuncV(tSetvar(0,tOr4(tString,tMapping,tMultiset,tArray))    tVar(0), tVar(0),tInt01),    tFuncV(tOr3(tObj,tProgram,tFunction) tMix,tMix,tInt01),    tFuncV(tMix tOr3(tObj,tProgram,tFunction),tMix,tInt01), -  tFuncV(tType tType,tOr3(tProgram,tFunction,tType),tInt01)), +  tFuncV(tType(tMix) tType(tMix), +  tOr3(tProgram,tFunction,tType(tMix)),tInt01)),    OPT_WEAK_TYPE|OPT_TRY_OPTIMIZE,0,generate_comparison);    /* function(mixed:int) */    ADD_EFUN2("`!",f_not,tFuncV(tMix,tVoid,tInt01),    OPT_TRY_OPTIMIZE,optimize_not,generate_not);      #define CMP_TYPE "!function(!(object|mixed)...:mixed)&function(mixed...:int(0..1))|function(int|float...:int(0..1))|function(string...:int(0..1))|function(type|program,type|program,type|program...:int(0..1))"    add_efun2("`<", f_lt,CMP_TYPE,OPT_TRY_OPTIMIZE,0,generate_comparison);    add_efun2("`<=",f_le,CMP_TYPE,OPT_TRY_OPTIMIZE,0,generate_comparison);    add_efun2("`>", f_gt,CMP_TYPE,OPT_TRY_OPTIMIZE,0,generate_comparison);    add_efun2("`>=",f_ge,CMP_TYPE,OPT_TRY_OPTIMIZE,0,generate_comparison);
pike.git/src/operators.c:3492:    tFunc(tSetvar(0,tMix),tVar(0)),       tOr(tFuncV(tMix tObj,tMix,tMix),    tFuncV(tObj tMix,tMix,tMix)),       tOr6( F_AND_TYPE(tInt),    F_AND_TYPE(tArray),    F_AND_TYPE(tMapping),    F_AND_TYPE(tMultiset),    F_AND_TYPE(tString), -  F_AND_TYPE(tOr(tType,tPrg)) ), +  F_AND_TYPE(tOr(tType(tMix),tPrg)) ),       tIfnot(tFuncV(tNone, tNot(tMapping), tMix),    tFuncV(tNone,    tOr3(tArray,tMultiset,tSetvar(4,tMapping)),    tVar(4)) )    ),       OPT_TRY_OPTIMIZE,optimize_binary,generate_and);      #define LOG_TYPE \    tOr7(tOr(tFuncV(tMix tObj,tMix,tMix), \    tFuncV(tObj,tMix,tMix)), \    tFuncV(tInt,tInt,tInt), \    tFuncV(tSetvar(1,tMapping),tSetvar(2,tMapping),tOr(tVar(1),tVar(2))), \    tFuncV(tSetvar(3,tMultiset),tSetvar(4,tMultiset),tOr(tVar(3),tVar(4))), \    tFuncV(tSetvar(5,tArray),tSetvar(6,tArray),tOr(tVar(5),tVar(6))), \    tFuncV(tString,tString,tString), \ -  tFuncV(tOr(tType,tPrg),tOr(tType,tPrg),tType)) +  tFuncV(tOr(tType(tMix),tPrg),tOr(tType(tMix),tPrg),tType(tMix)))       ADD_EFUN2("`|",f_or,LOG_TYPE,OPT_TRY_OPTIMIZE,optimize_binary,generate_or);       ADD_EFUN2("`^",f_xor,LOG_TYPE,OPT_TRY_OPTIMIZE,optimize_binary,generate_xor);      #define SHIFT_TYPE \    tOr(tOr(tFuncV(tMix tObj,tMix,tMix), \    tFuncV(tObj tMix,tMix,tMix)), \    tFuncV(tInt,tInt,tInt))   
pike.git/src/operators.c:3586:    tIfnot(tFuncV(tNone, tNot(tFlt), tMix),    tFunc(tOr(tInt,tFlt) tOr(tInt,tFlt),tFlt))),    OPT_TRY_OPTIMIZE,0,generate_mod);       /* function(object:mixed)|function(int:int)|function(float:float)|function(string:string) */    ADD_EFUN2("`~",f_compl,    tOr5(tFunc(tObj,tMix),    tFunc(tInt,tInt),    tFunc(tFlt,tFlt),    tFunc(tStr,tStr), -  tFunc(tOr(tType,tProgram),tType)), +  tFunc(tOr(tType(tMix),tProgram),tType(tMix))),    OPT_TRY_OPTIMIZE,0,generate_compl);    /* function(string|multiset|array|mapping|object:int) */    ADD_EFUN2("sizeof", f_sizeof,    tFunc(tOr5(tStr,tMultiset,tArray,tMapping,tObj),tInt),    OPT_TRY_OPTIMIZE, 0,generate_sizeof);       /* function(mixed,mixed ...:mixed) */    ADD_EFUN2("`()",f_call_function,tFuncV(tMix,tMix,tMix),OPT_SIDE_EFFECT | OPT_EXTERNAL_DEPEND,0,generate_call_function);       /* This one should be removed */