diff --git a/src/operators.c b/src/operators.c index e984def04c046116725b51a678ec8292e1680620..209084956dfb88b7349487efb4c7619f3bffdafc 100644 --- a/src/operators.c +++ b/src/operators.c @@ -6,7 +6,7 @@ /**/ #include "global.h" #include <math.h> -RCSID("$Id: operators.c,v 1.52 1999/03/26 23:40:57 grubba Exp $"); +RCSID("$Id: operators.c,v 1.53 1999/05/25 13:32:12 mirar Exp $"); #include "interpret.h" #include "svalue.h" #include "multiset.h" @@ -2041,20 +2041,29 @@ void init_operators(void) "function(0=array...:0)|" "function(mapping(1=mixed:2=mixed)...:mapping(1:2))|" "function(3=multiset...:3) */ - ADD_EFUN2("`+",f_add,tOr7(tIfnot(tFuncV(,tNot(tObj),tMix),tFunction),tFuncV(,tInt,tInt),tIfnot(tFuncV(,tInt,tMix),tFuncV(,tOr(tInt,tFlt),tFlt)),tIfnot(tFuncV(,tOr(tInt,tFlt),tMix),tFuncV(,tOr3(tStr,tInt,tFlt),tStr)),tFuncV(,tSetvar(0,tArray),tVar(0)),tFuncV(,tMap(tSetvar(1,tMix),tSetvar(2,tMix)),tMap(tVar(1),tVar(2))),tFuncV(,tSetvar(3,tMultiset),tVar(3))), + ADD_EFUN2("`+",f_add, + tOr7(tIfnot(tFuncV(,tNot(tObj),tMix),tFunction), + tFuncV(,tInt,tInt), + tIfnot(tFuncV(,tInt,tMix), + tFuncV(,tOr(tInt,tFlt),tFlt)), + tIfnot(tFuncV(,tOr(tInt,tFlt),tMix), + tFuncV(,tOr3(tStr,tInt,tFlt),tStr)), + tFuncV(,tSetvar(0,tArray),tVar(0)), + tFuncV(,tMap(tSetvar(1,tMix), + tSetvar(2,tMix)),tMap(tVar(1),tVar(2))), + tFuncV(,tSetvar(3,tMultiset),tVar(3))), OPT_TRY_OPTIMIZE,optimize_binary,generate_sum); - - /* !function(!object...:mixed)&function(mixed...:mixed)|" - "function(int:int)|" - "function(float:float)|" - "function(array(0=mixed),array:array(0))|" - "function(mapping(1=mixed:2=mixed),mapping:mapping(1:2))|" - "function(multiset(3=mixed),multiset:multiset(3))|" - "function(float|int,float:float)|" - "function(float,int:float)|" - "function(int,int:int)|" - "function(string,string:string) */ - ADD_EFUN2("`-",f_minus,tOr7(tIfnot(tFuncV(,tNot(tObj),tMix),tFunction),tFunc(tInt,tInt),tFunc(tFlt,tFlt),tFunc(tArr(tSetvar(0,tMix)) tArray,tArr(tVar(0))),tFunc(tMap(tSetvar(1,tMix),tSetvar(2,tMix)) tMapping,tMap(tVar(1),tVar(2))),tFunc(tSet(tSetvar(3,tMix)) tMultiset,tSet(tVar(3))),tOr4(tFunc(tOr(tFlt,tInt) tFlt,tFlt),tFunc(tFlt tInt,tFlt),tFunc(tInt tInt,tInt),tFunc(tStr tStr,tStr))), + + ADD_EFUN2("`-",f_minus, + tOr7(tIfnot(tFuncV(,tNot(tObj),tMix),tFunction), + tFuncV(tInt,tInt,tInt), + tIfnot(tFuncV(tInt,tInt,tMix), + tFuncV(tOr(tInt,tFlt),tOr(tInt,tFlt),tFlt)), + tFuncV(tArr(tSetvar(0,tMix)),tArray,tArr(tVar(0))), + tFuncV(tMap(tSetvar(1,tMix),tSetvar(2,tMix)), + tMapping,tMap(tVar(1),tVar(2))), + tFunc(tSet(tSetvar(3,tMix)) tMultiset,tSet(tVar(3))), + tFuncV(tStr,tStr,tStr)), OPT_TRY_OPTIMIZE,0,generate_minus); #define LOG_TYPE "function(mixed,object...:mixed)|function(object,mixed...:mixed)|function(int...:int)|function(mapping(0=mixed:1=mixed)...:mapping(0:1))|function(multiset(2=mixed)...:multiset(2))|function(array(3=mixed)...:array(3))|function(string...:string)"