plugins/include/float.inc
changeset 4327 60e4042f2589
parent 3497 e02e1c3beecb
     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  /**