pike.git / src / operators.c

version» Context lines:

pike.git/src/operators.c:5682:      #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),    tFuncV(tNone,tMix,tMix)), -  tFuncV(tInt,tInt,tInt), +  tOr3(tFuncV(tIntPos,tIntPos,tIntPos), +  tFuncV(tIntNeg,tIntNeg,tIntNeg), +  tIfnot(tFuncV(tNone, tNot(tIntNeg), tMix), +  tIfnot(tFuncV(tNone, tNot(tIntPos), tMix), +  tFuncV(tInt, tInt, tInt)))),    tIfnot(tFuncV(tNone, tNot(tFlt), tMix),    tFuncV(tOr(tInt,tFlt),tOr(tInt,tFlt),tFlt)),    tIfnot(tFuncV(tNone, tNot(tStr), tMix),    tFuncV(tOr3(tSetvar(0, tStr),tInt,tFlt),    tOr3(tSetvar(1, tStr),tInt,tFlt),tOr(tVar(0),tVar(1)))),    tFuncV(tSetvar(0,tArray),tSetvar(1,tArray),    tOr(tVar(0),tVar(1))),    tFuncV(tSetvar(0,tMapping),tSetvar(1,tMapping),    tOr(tVar(0),tVar(1))),    tFuncV(tSetvar(0,tMultiset),tSetvar(1,tMultiset),    tOr(tVar(0),tVar(1)))),    OPT_TRY_OPTIMIZE,optimize_binary,generate_sum);       ADD_EFUN2("`-",f_minus,    tOr7(tIfnot(tFuncV(tNone,tNot(tOr(tObj,tMix)),tMix),    tFuncV(tNone,tMix,tMix)), -  tFuncV(tInt,tInt,tInt), +  tOr4(tFuncV(tIntNeg,tIntPos,tIntNeg), +  tFuncV(tIntPos,tIntNeg,tIntPos), +  tIfnot(tFuncV(tNot(tIntPos), tNot(tIntPos), tMix), +  tFuncV(tInt, tInt, tInt)), +  tIfnot(tFuncV(tNot(tIntNeg), tNot(tIntNeg), tMix), +  tFuncV(tInt, tInt, tInt))),    tIfnot(tFuncV(tNone,tNot(tFlt),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)),    tOr3(tMapping,tArray,tMultiset),    tMap(tVar(1),tVar(2))),    tFunc(tSet(tSetvar(3,tMix)) tMultiset,tSet(tVar(3))),    tFuncV(tSetvar(0,tStr),tStr,tVar(0))),    OPT_TRY_OPTIMIZE,0,generate_minus);   
pike.git/src/operators.c:5813:    tFunc(tObj tMix, tOr3(tFloat,tInt,tObj)),    tFunc(tMix tObj, tOr3(tFloat,tInt,tObj)),    tFunc(tFloat tInt, tFloat)),    OPT_TRY_OPTIMIZE,0,0);       ADD_EFUN2("`*", f_multiply,    tOr9(tIfnot(tFuncV(tNone,tNot(tOr(tObj,tMix)),tMix),    tFuncV(tNone,tOr(tMix,tVoid),tMix)),    tFunc(tArr(tArr(tSetvar(1,tMix)))    tArr(tSetvar(1,tMix)),tArr(tVar(1))), -  tFuncV(tInt,tInt,tInt), +  tOr4(tFuncV(tIntPos,tIntPos,tIntPos), +  tFuncV(tIntNeg,tIntNeg,tIntPos), +  tFuncV(tIntPos,tIntNeg,tIntNeg), +  tFuncV(tIntNeg,tIntPos,tIntNeg)),    tIfnot(tFuncV(tNone,tNot(tFlt),tMix),    tFuncV(tOr(tFlt,tInt),tOr(tFlt,tInt),tFlt)),    tFunc(tArr(tStr) tStr,tStr),    tFunc(tArr(tSetvar(0,tMix)) tInt,tArr(tVar(0))),    tFunc(tArr(tSetvar(0,tMix)) tFlt,tArr(tVar(0))),    tFunc(tSetvar(0, tStr) tInt,tVar(0)),    tFunc(tSetvar(0, tStr) tFlt,tVar(0))),    OPT_TRY_OPTIMIZE,optimize_binary,generate_multiply);       /* !function(!object...:mixed)&function(mixed...:mixed)|"    "function(int,int...:int)|"    "!function(int...:mixed)&function(float|int...:float)|"    "function(array(0=mixed),array|int|float...:array(array(0)))|"    "function(string,string|int|float...:array(string)) */    ADD_EFUN2("`/", f_divide,    tOr5(tIfnot(tFuncV(tNone,tNot(tOr(tObj,tMix)),tMix),    tFuncV(tNone,tMix,tMix)), -  tFuncV(tInt, tInt, tInt), +  tOr4(tFuncV(tIntPos,tIntPos,tIntPos), +  tFuncV(tIntNeg,tIntNeg,tIntPos), +  tFuncV(tIntPos,tIntNeg,tIntNeg), +  tFuncV(tIntNeg,tIntPos,tIntNeg)),    tIfnot(tFuncV(tNone, tNot(tFlt), tMix),    tFuncV(tOr(tFlt,tInt),tOr(tFlt,tInt),tFlt)),    tFuncV(tArr(tSetvar(0,tMix)),    tOr3(tArray,tInt,tFlt),    tArr(tArr(tVar(0)))),    tFuncV(tStr,tOr3(tStr,tInt,tFlt),tArr(tStr))),    OPT_TRY_OPTIMIZE,0,generate_divide);       /* function(mixed,object:mixed)|"    "function(object,mixed:mixed)|"