pike.git / src / operators.c

version» Context lines:

pike.git/src/operators.c:5883:    /* 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);    - #if 1 -  /* Old */ -  ADD_EFUN2("`+",f_add, -  tOr7(tIfnot(tFuncV(tNone,tNot(tObj),tMix), -  tOr(tFuncArg(tSetvar(2,tObj), tFindLFun(tVar(2), "`+")), -  tFuncV(tNot(tObj), tMix, tMix))), -  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), -  tOr4(tFuncV(tOr3(tNStr(tSetvar(0, tInt)),tInt,tFlt), -  tOr3(tNStr(tSetvar(1, tInt)),tInt,tFlt), -  tNStr(tOr(tVar(0),tVar(1)))), -  tIfnot(tFuncV(tNone, tNot(tOr(tInt, tFlt)), tMix), -  tFuncV(tNone, tMix, tNStr(tIntDigits))), -  tIfnot(tFuncV(tNone, tNot(tOr(tIntMinus, tFlt)), tMix), -  tFuncV(tNone, tMix, tNStr(tIntMinusSign))), -  tIfnot(tFuncV(tNone, tNot(tFlt), tMix), -  tFuncV(tNone, tMix, -  tNStr(tOr3(tIntPlusSign, -  tIntDecimal, -  tIntExp)))))), -  tIfnot(tFuncV(tNone, tNot(tArr(tMix)), tMix), -  tFuncV(tArr(tSetvar(0,tMix)), tArr(tSetvar(1,tMix)), -  tArr(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); - #define TRANS_NAME "ADD" - #else - #define TRANS_NAME "`+" - #endif -  -  /* Transitive */ -  ADD_EFUN2(TRANS_NAME, f_add, +  ADD_EFUN2("`+", f_add,    tTransitive(tFunc(tSetvar(0, tOr7(tObj, tInt, tFloat, tStr,    tArr(tMix), tMapping, tMultiset)),    tVar(0)),    tOr7(tOr(tFuncArg(tSetvar(1, tObj),    tFindLFun(tVar(1), "`+")),    tFunc(tNot(tObj) tObj, tMix)), - #if 0 -  tOr3(tFunc(tIntPos tIntPos, tIntPos), -  tFunc(tIntNeg tIntNeg, tIntNeg), -  tIfnot(tFuncV(tNone, tNot(tIntNeg), tMix), -  tIfnot(tFuncV(tNone, tNot(tIntPos), tMix), -  tFunc(tInt tInt, tInt)))), - #else +     tFunc(tSetvar(2, tInt) tSetvar(3, tInt),    tAddInt(tVar(2), tVar(3))), - #endif +     tOr(tFunc(tFloat tOr(tFloat, tInt), tFloat),    tFunc(tOr(tFloat, tInt) tFloat, tFloat)),    tOr3(tFunc(tSetvar(2, tStr) tSetvar(3, tStr),    tOr(tVar(2), tVar(3))),    tFunc(tSetvar(2, tStr) tOr(tInt, tFloat),    tOr(tVar(2), tStr7)),    tFunc(tOr(tInt, tFloat) tSetvar(3, tStr),    tOr(tStr7, tVar(3)))),    tFunc(tArr(tSetvar(0,tMix)) tArr(tSetvar(1,tMix)),    tArr(tOr(tVar(0), tVar(1)))),