1.1 --- a/plugins/include/float.inc Sun Apr 20 00:37:20 2014 -0500
1.2 +++ b/plugins/include/float.inc Tue Apr 22 19:40:45 2014 -0700
1.3 @@ -246,10 +246,25 @@
1.4 */
1.5 #pragma rational Float
1.6
1.7 +native bool:__FLOAT_GT__(Float:a, Float:b);
1.8 +native bool:__FLOAT_GE__(Float:a, Float:b);
1.9 +native bool:__FLOAT_LT__(Float:a, Float:b);
1.10 +native bool:__FLOAT_LE__(Float:a, Float:b);
1.11 +native bool:__FLOAT_EQ__(Float:a, Float:b);
1.12 +native bool:__FLOAT_NE__(Float:a, Float:b);
1.13 +native bool:__FLOAT_NOT__(Float:a);
1.14 +
1.15 native Float:operator*(Float:oper1, Float:oper2) = FloatMul;
1.16 native Float:operator/(Float:oper1, Float:oper2) = FloatDiv;
1.17 native Float:operator+(Float:oper1, Float:oper2) = FloatAdd;
1.18 native Float:operator-(Float:oper1, Float:oper2) = FloatSub;
1.19 +native bool:operator!(Float:oper1) = __FLOAT_NOT__;
1.20 +native bool:operator>(Float:oper1, Float:oper2) = __FLOAT_GT__;
1.21 +native bool:operator>=(Float:oper1, Float:oper2) = __FLOAT_GE__;
1.22 +native bool:operator<(Float:oper1, Float:oper2) = __FLOAT_LT__;
1.23 +native bool:operator<=(Float:oper1, Float:oper2) = __FLOAT_LE__;
1.24 +native bool:operator!=(Float:oper1, Float:oper2) = __FLOAT_NE__;
1.25 +native bool:operator==(Float:oper1, Float:oper2) = __FLOAT_EQ__;
1.26
1.27 stock Float:operator++(Float:oper)
1.28 {
1.29 @@ -296,90 +311,54 @@
1.30 return FloatSub(float(oper1), oper2);
1.31 }
1.32
1.33 -stock bool:operator==(Float:oper1, Float:oper2)
1.34 -{
1.35 - return FloatCompare(oper1, oper2) == 0;
1.36 -}
1.37 -
1.38 stock bool:operator==(Float:oper1, oper2)
1.39 {
1.40 - return FloatCompare(oper1, float(oper2)) == 0; /* "==" is commutative */
1.41 -}
1.42 -
1.43 -stock bool:operator!=(Float:oper1, Float:oper2)
1.44 -{
1.45 - return FloatCompare(oper1, oper2) != 0;
1.46 + return __FLOAT_EQ__(oper1, float(oper2));
1.47 }
1.48
1.49 stock bool:operator!=(Float:oper1, oper2)
1.50 {
1.51 - return FloatCompare(oper1, float(oper2)) != 0; /* "==" is commutative */
1.52 -}
1.53 -
1.54 -stock bool:operator>(Float:oper1, Float:oper2)
1.55 -{
1.56 - return FloatCompare(oper1, oper2) > 0;
1.57 + return __FLOAT_NE__(oper1, float(oper2));
1.58 }
1.59
1.60 stock bool:operator>(Float:oper1, oper2)
1.61 {
1.62 - return FloatCompare(oper1, float(oper2)) > 0;
1.63 + return __FLOAT_GT__(oper1, float(oper2));
1.64 }
1.65
1.66 stock bool:operator>(oper1, Float:oper2)
1.67 {
1.68 - return FloatCompare(float(oper1), oper2) > 0;
1.69 -}
1.70 -
1.71 -stock bool:operator>=(Float:oper1, Float:oper2)
1.72 -{
1.73 - return FloatCompare(oper1, oper2) >= 0;
1.74 + return __FLOAT_GT__(float(oper1), oper2);
1.75 }
1.76
1.77 stock bool:operator>=(Float:oper1, oper2)
1.78 {
1.79 - return FloatCompare(oper1, float(oper2)) >= 0;
1.80 + return __FLOAT_GE__(oper1, float(oper2));
1.81 }
1.82
1.83 stock bool:operator>=(oper1, Float:oper2)
1.84 {
1.85 - return FloatCompare(float(oper1), oper2) >= 0;
1.86 -}
1.87 -
1.88 -stock bool:operator<(Float:oper1, Float:oper2)
1.89 -{
1.90 - return FloatCompare(oper1, oper2) < 0;
1.91 + return __FLOAT_GE__(float(oper1), oper2);
1.92 }
1.93
1.94 stock bool:operator<(Float:oper1, oper2)
1.95 {
1.96 - return FloatCompare(oper1, float(oper2)) < 0;
1.97 + return __FLOAT_LT__(oper1, float(oper2));
1.98 }
1.99
1.100 stock bool:operator<(oper1, Float:oper2)
1.101 {
1.102 - return FloatCompare(float(oper1), oper2) < 0;
1.103 -}
1.104 -
1.105 -stock bool:operator<=(Float:oper1, Float:oper2)
1.106 -{
1.107 - return FloatCompare(oper1, oper2) <= 0;
1.108 + return __FLOAT_LT__(float(oper1), oper2);
1.109 }
1.110
1.111 stock bool:operator<=(Float:oper1, oper2)
1.112 {
1.113 - return FloatCompare(oper1, float(oper2)) <= 0;
1.114 + return __FLOAT_LE__(oper1, float(oper2));
1.115 }
1.116
1.117 stock bool:operator<=(oper1, Float:oper2)
1.118 {
1.119 - return FloatCompare(float(oper1), oper2) <= 0;
1.120 -}
1.121 -
1.122 -stock bool:operator!(Float:oper)
1.123 -{
1.124 - return (_:oper & ((-1)/2)) == 0; /* -1 = all bits to 1; /2 = remove most significant bit (sign)
1.125 - works on both 32bit and 64bit systems; no constant required */
1.126 + return __FLOAT_LE__(float(oper1), oper2);
1.127 }
1.128
1.129 /**