From 8e31764c49149cd73cdbfd8a251bb31f068bf799 Mon Sep 17 00:00:00 2001 From: Marco Costalba Date: Wed, 18 Aug 2010 16:40:26 +0100 Subject: [PATCH 1/1] Use templetized operations for Square 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 --- src/square.h | 18 ++++-------------- src/types.h | 3 +++ 2 files changed, 7 insertions(+), 14 deletions(-) diff --git a/src/square.h b/src/square.h index 8de3f55c..d539e005 100644 --- a/src/square.h +++ b/src/square.h @@ -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)); diff --git a/src/types.h b/src/types.h index f018311d..ec9f9bb9 100644 --- a/src/types.h +++ b/src/types.h @@ -125,6 +125,9 @@ inline T operator* (int i, const T d) { return T(int(d) * i); } template inline T operator/ (const T d, int i) { return T(int(d) / i); } +template +inline T operator- (const T d) { return T(-int(d)); } + template inline void operator++ (T& d, int) { d = T(int(d) + 1); } -- 2.39.2