pike.git/
src/
operators.c
Branch:
Tag:
Non-build tags
All tags
No tags
1999-12-27
1999-12-27 16:13:53 by Henrik Grubbström (Grubba) <grubba@grubba.org>
563fdcf1f201a086fa78dc06cab21015714ee59e (
27
lines) (+
22
/-
5
)
[
Show
|
Annotate
]
Branch:
7.9
Improved types for `==() and `!=().
Rev: src/operators.c:1.81
6:
/**/ #include "global.h" #include <math.h>
-
RCSID("$Id: operators.c,v 1.
80
1999/12/
18
17
:
49
:
05
mast
Exp $");
+
RCSID("$Id: operators.c,v 1.
81
1999/12/
27
16
:
13
:
53
grubba
Exp $");
#include "interpret.h" #include "svalue.h" #include "multiset.h"
2460:
0); /* OPT_ASSIGNMENT|OPT_TRY_OPTIMIZE); ? */ /* function(mixed...:int) */
-
ADD_EFUN2("`==",f_eq,tFuncV(
tNone
,tMix,tInt01),OPT_TRY_OPTIMIZE,optimize_eq,generate_comparison);
+
ADD_EFUN2("`==",f_eq,
+
tOr5(
tFuncV(
tOr(tInt
,
tFloat) tOr(tInt,tFloat),
+
tOr(tInt,tFloat),tInt01),
+
tFuncV(tSetvar(0,tOr4(tString,tMapping,tSet,tArray)) tVar(0),
+
tVar(0),tInt01),
+
tFuncV(tOr3(tObject,tProgram,tFunction)
tMix,
tMix,
tInt01),
+
tFuncV(tMix tOr3(tObject,tProgram,tFunction),tMix,tInt01),
+
tFuncV(tType tType,tOr3(tProgram,tFunction,tType),tInt01)),
+
OPT_TRY_OPTIMIZE,optimize_eq,generate_comparison);
/* function(mixed...:int) */
-
ADD_EFUN2("`!=",f_ne,tFuncV(
tNone
,tMix,tInt01),OPT_TRY_OPTIMIZE,0,generate_comparison);
+
ADD_EFUN2("`!=",f_ne,
+
tOr5(
tFuncV(
tOr(tInt
,
tFloat) tOr(tInt,tFloat),
+
tOr(tInt,tFloat),tInt01),
+
tFuncV(tSetvar(0,tOr4(tString,tMapping,tSet,tArray)) tVar(0),
+
tVar(0),tInt01),
+
tFuncV(tOr3(tObject,tProgram,tFunction)
tMix,
tMix,
tInt01),
+
tFuncV(tMix tOr3(tObject,tProgram,tFunction),tMix,tInt01),
+
tFuncV(tType tType,tOr3(tProgram,tFunction,tType),tInt01)),
+
OPT_TRY_OPTIMIZE,0,generate_comparison);
/* function(mixed:int) */
-
add
_
efun2
("`!",f_not,
"function
(
mixed:int(0..1))"
,
OPT_TRY_OPTIMIZE
,
-
optimize_not,generate_not);
+
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);