pike.git
/
src
/
operators.c
version
»
Context lines:
10
20
40
80
file
none
3
pike.git/src/operators.c:5763:
/* 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 0
+
/* 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),
pike.git/src/operators.c:5785:
tFuncV(tOr3(tNStr(tSetvar(0, tInt)),tInt,tFlt), tOr3(tNStr(tSetvar(1, tInt)),tInt,tFlt), tNStr(tOr(tVar(0),tVar(1))))), 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,
+
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)),
+
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)))),
+
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)))),
+
tFunc(tSetvar(0, tMapping) tSetvar(1, tMapping),
+
tOr(tVar(0), tVar(1))),
+
tFunc(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(tObj),tMix), tOr(tFuncArg(tSetvar(2,tObj), tFindLFun(tVar(2), "`-")), tFuncV(tNot(tObj), tMix, tMix))), tOr4(tFuncV(tIntNeg,tIntPos,tIntNeg), tFuncV(tIntPos,tIntNeg,tIntPos), tIfnot(tFuncV(tNot(tIntPos), tNot(tIntPos), tMix), tFuncV(tInt tInt, tInt, tInt)), tIfnot(tFuncV(tNot(tIntNeg), tNot(tIntNeg), tMix), tFuncV(tInt tInt, tInt, tInt))),