pike.git
/
src
/
operators.c
version
»
Context lines:
10
20
40
80
file
none
3
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)))),