X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Ftypes.h;h=3cfaa072ae5f2bf71f0693c7e9d998d0135226e4;hp=43f2d4e756521ecdf15b439747865277aa2aa9f5;hb=2c52147dbfdc714a0ae95982f37fc5141b225f8c;hpb=7caa6cd3383cf90189a1947c9bdf9c6fea1172a6 diff --git a/src/types.h b/src/types.h index 43f2d4e7..3cfaa072 100644 --- a/src/types.h +++ b/src/types.h @@ -275,23 +275,24 @@ inline Value eg_value(Score s) { return Value((int)(unsigned(s) & 0x7FFFU) - (int)(unsigned(s) & 0x8000U)); } -#define ENABLE_BASE_OPERATORS_ON(T) \ -inline T operator+(const T d1, const T d2) { return T(int(d1) + int(d2)); } \ -inline T operator-(const T d1, const T d2) { return T(int(d1) - int(d2)); } \ -inline T operator*(int i, const T d) { return T(i * int(d)); } \ -inline T operator*(const T d, int i) { return T(int(d) * i); } \ -inline T operator-(const T d) { return T(-int(d)); } \ -inline T& operator+=(T& d1, const T d2) { return d1 = d1 + d2; } \ -inline T& operator-=(T& d1, const T d2) { return d1 = d1 - d2; } \ +#define ENABLE_BASE_OPERATORS_ON(T) \ +inline T operator+(T d1, T d2) { return T(int(d1) + int(d2)); } \ +inline T operator-(T d1, T d2) { return T(int(d1) - int(d2)); } \ +inline T operator*(int i, T d) { return T(i * int(d)); } \ +inline T operator*(T d, int i) { return T(int(d) * i); } \ +inline T operator-(T d) { return T(-int(d)); } \ +inline T& operator+=(T& d1, T d2) { return d1 = d1 + d2; } \ +inline T& operator-=(T& d1, T d2) { return d1 = d1 - d2; } \ inline T& operator*=(T& d, int i) { return d = T(int(d) * i); } ENABLE_BASE_OPERATORS_ON(Score) -#define ENABLE_FULL_OPERATORS_ON(T) \ -ENABLE_BASE_OPERATORS_ON(T) \ -inline T& operator++(T& d) { return d = T(int(d) + 1); } \ -inline T& operator--(T& d) { return d = T(int(d) - 1); } \ -inline T operator/(const T d, int i) { return T(int(d) / i); } \ +#define ENABLE_FULL_OPERATORS_ON(T) \ +ENABLE_BASE_OPERATORS_ON(T) \ +inline T& operator++(T& d) { return d = T(int(d) + 1); } \ +inline T& operator--(T& d) { return d = T(int(d) - 1); } \ +inline T operator/(T d, int i) { return T(int(d) / i); } \ +inline int operator/(T d1, T d2) { return int(d1) / int(d2); } \ inline T& operator/=(T& d, int i) { return d = T(int(d) / i); } ENABLE_FULL_OPERATORS_ON(Value)