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.80 1999/12/18 17:49:05 mast Exp $"); + RCSID("$Id: operators.c,v 1.81 1999/12/27 16:13:53 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:2453:    tFunc(tSet(tSetvar(4,tMix)) tVar(4) tSetvar(5,tMix), tVar(5))),    0); /* OPT_ASSIGNMENT|OPT_TRY_OPTIMIZE); ? */       ADD_EFUN("`->=", f_arrow_assign,    tOr3(tFunc(tArr(tOr4(tArray,tObj,tMultiset,tMapping)) tStr tSetvar(0,tMix), tVar(0)),    tFunc(tOr(tObj, tMultiset) tStr tSetvar(1,tMix), tVar(1)),    tFunc(tMap(tMix, tSetvar(2,tMix)) tStr tVar(2), tVar(2))),    0); /* OPT_ASSIGNMENT|OPT_TRY_OPTIMIZE); ? */       /* function(mixed...:int) */ -  ADD_EFUN2("`==",f_eq,tFuncV(tNone,tMix,tInt01),OPT_TRY_OPTIMIZE,optimize_eq,generate_comparison); +  ADD_EFUN2("`==",f_eq, +  tOr5(tFuncV(tOr(tInt,tFloat) tOr(tInt,tFloat), +  tOr(tInt,tFloat),tInt01), +  tFuncV(tSetvar(0,tOr4(tString,tMapping,tSet,tArray)) tVar(0), +  tVar(0),tInt01), +  tFuncV(tOr3(tObject,tProgram,tFunction) tMix,tMix,tInt01), +  tFuncV(tMix tOr3(tObject,tProgram,tFunction),tMix,tInt01), +  tFuncV(tType tType,tOr3(tProgram,tFunction,tType),tInt01)), +  OPT_TRY_OPTIMIZE,optimize_eq,generate_comparison);    /* function(mixed...:int) */ -  ADD_EFUN2("`!=",f_ne,tFuncV(tNone,tMix,tInt01),OPT_TRY_OPTIMIZE,0,generate_comparison); +  ADD_EFUN2("`!=",f_ne, +  tOr5(tFuncV(tOr(tInt,tFloat) tOr(tInt,tFloat), +  tOr(tInt,tFloat),tInt01), +  tFuncV(tSetvar(0,tOr4(tString,tMapping,tSet,tArray)) tVar(0), +  tVar(0),tInt01), +  tFuncV(tOr3(tObject,tProgram,tFunction) tMix,tMix,tInt01), +  tFuncV(tMix tOr3(tObject,tProgram,tFunction),tMix,tInt01), +  tFuncV(tType tType,tOr3(tProgram,tFunction,tType),tInt01)), +  OPT_TRY_OPTIMIZE,0,generate_comparison);    /* function(mixed:int) */ -  add_efun2("`!",f_not,"function(mixed:int(0..1))",OPT_TRY_OPTIMIZE, -  optimize_not,generate_not); +  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);       ADD_EFUN2("`+",f_add,    tOr7(tIfnot(tFuncV(tNone,tNot(tOr(tObj,tMix)),tMix),tFunction),    tFuncV(tInt,tInt,tInt),