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