along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-
#if !defined(TYPES_H_INCLUDED)
#define TYPES_H_INCLUDED
#else
+// Disable some silly and noisy warning from MSVC compiler
+#pragma warning(disable: 4800) // Forcing value to bool 'true' or 'false'
+#pragma warning(disable: 4127) // Conditional expression is constant
+
typedef __int8 int8_t;
typedef unsigned __int8 uint8_t;
typedef __int16 int16;
// Bitboard type
typedef uint64_t Bitboard;
+#include <cstdlib>
////
//// Configuration
//// -DUSE_POPCNT | Add runtime support for use of popcnt asm-instruction.
//// | Works only in 64-bit mode. For compiling requires hardware
//// | with popcnt support. Around 4% speed-up.
+////
+//// -DOLD_LOCKS | By default under Windows are used the fast Slim Reader/Writer (SRW)
+//// | Locks and Condition Variables: these are not supported by Windows XP
+//// | and older, to compile for those platforms you should enable OLD_LOCKS.
// Automatic detection for 64-bit under Windows
#if defined(_WIN64)
inline T operator- (const T d) { OK(T); return T(-int(d)); }
template<typename T>
-inline void operator++ (T& d, int) { OK(T); d = T(int(d) + 1); }
+inline T operator++ (T& d, int) { OK(T); d = T(int(d) + 1); return d; }
template<typename T>
-inline void operator-- (T& d, int) { OK(T); d = T(int(d) - 1); }
+inline T operator-- (T& d, int) { OK(T); d = T(int(d) - 1); return d; }
template<typename T>
inline void operator+= (T& d1, const T d2) { OK(T); d1 = d1 + d2; }