Use templetized operations for Square
authorMarco Costalba <mcostalba@gmail.com>
Wed, 18 Aug 2010 15:40:26 +0000 (16:40 +0100)
committerMarco Costalba <mcostalba@gmail.com>
Thu, 19 Aug 2010 12:48:33 +0000 (13:48 +0100)
This is tricky because there are some special
binary fnctions with SquareDelta that we should
leave as they are.

Also note that we needed to add Unary minus template
to fix a comile error in SERIALIZE_MOVES_D macro that was
triggered because now we don't allow conversion to int.

No fuctional change.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
src/square.h
src/types.h

index 8de3f55c56016269b0469277053b9626825e1a84..d539e0054df8ed99ca4497f1b39fe6202adb4c8d 100644 (file)
@@ -77,20 +77,10 @@ const int FlopMask = 07;
 //// Inline functions
 ////
 
-inline Square operator+ (Square x, int i) { return Square(int(x) + i); }
-inline void operator++ (Square &x, int) { x = Square(int(x) + 1); }
-inline void operator+= (Square &x, int i) { x = Square(int(x) + i); }
-inline Square operator- (Square x, int i) { return Square(int(x) - i); }
-inline void operator-- (Square &x, int) { x = Square(int(x) - 1); }
-inline void operator-= (Square &x, int i) { x = Square(int(x) - i); }
-inline Square operator+ (Square x, SquareDelta i) { return Square(int(x) + i); }
-inline void operator+= (Square &x, SquareDelta i) { x = Square(int(x) + i); }
-inline Square operator- (Square x, SquareDelta i) { return Square(int(x) - i); }
-inline void operator-= (Square &x, SquareDelta i) { x = Square(int(x) - i); }
-
-inline SquareDelta operator- (Square x, Square y) {
-  return SquareDelta(int(x) - int(y));
-}
+inline Square operator+ (Square x, SquareDelta i) { return x + Square(i); }
+inline void operator+= (Square& x, SquareDelta i) { x = x + Square(i); }
+inline Square operator- (Square x, SquareDelta i) { return x - Square(i); }
+inline void operator-= (Square& x, SquareDelta i) { x = x - Square(i); }
 
 inline Square make_square(File f, Rank r) {
   return Square(int(f) | (int(r) << 3));
index f018311dc70f629b4d324a9ed96b379cf0e7f587..ec9f9bb97f3a9a688bc6cd5d077579c9ffe3ea07 100644 (file)
@@ -125,6 +125,9 @@ inline T operator* (int i, const T d) { return T(int(d) * i); }
 template<typename T>
 inline T operator/ (const T d, int i) { return T(int(d) / i); }
 
+template<typename T>
+inline T operator- (const T d) { return T(-int(d)); }
+
 template<typename T>
 inline void operator++ (T& d, int) { d = T(int(d) + 1); }