X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Ftypes.h;h=031cb0babda381b50f1643a9dfe2a945a3a12a02;hp=8ce7dab55df09cc92a9ba14ebd2ef4c48de94fad;hb=c2fc80e5d16339266b5bf6687fa843ff65de3b3e;hpb=04ff9c2548eb4d8b8a59db23f7212c7a8cdd25aa diff --git a/src/types.h b/src/types.h index 8ce7dab5..031cb0ba 100644 --- a/src/types.h +++ b/src/types.h @@ -38,26 +38,7 @@ #include #include -#if defined(_MSC_VER) - -// Disable some silly and noisy warning from MSVC compiler -#pragma warning(disable: 4127) // Conditional expression is constant -#pragma warning(disable: 4146) // Unary minus operator applied to unsigned type -#pragma warning(disable: 4800) // Forcing value to bool 'true' or 'false' - -// MSVC does not support -typedef signed __int8 int8_t; -typedef unsigned __int8 uint8_t; -typedef signed __int16 int16_t; -typedef unsigned __int16 uint16_t; -typedef signed __int32 int32_t; -typedef unsigned __int32 uint32_t; -typedef signed __int64 int64_t; -typedef unsigned __int64 uint64_t; - -#else -# include -#endif +#include "platform.h" #if defined(_WIN64) # include // MSVC popcnt and bsfq instrinsics @@ -99,7 +80,7 @@ typedef uint64_t Key; typedef uint64_t Bitboard; const int MAX_MOVES = 256; -const int MAX_PLY = 100; +const int MAX_PLY = 256; const int MAX_PLY_PLUS_2 = MAX_PLY + 2; const Bitboard FileABB = 0x0101010101010101ULL; @@ -162,11 +143,11 @@ enum ScaleFactor { SCALE_FACTOR_NONE = 255 }; -enum ValueType { - VALUE_TYPE_NONE = 0, - VALUE_TYPE_UPPER = 1, - VALUE_TYPE_LOWER = 2, - VALUE_TYPE_EXACT = VALUE_TYPE_UPPER | VALUE_TYPE_LOWER +enum Bound { + BOUND_NONE = 0, + BOUND_UPPER = 1, + BOUND_LOWER = 2, + BOUND_EXACT = BOUND_UPPER | BOUND_LOWER }; enum Value { @@ -185,7 +166,7 @@ enum Value { }; enum PieceType { - NO_PIECE_TYPE = 0, + NO_PIECE_TYPE = 0, ALL_PIECES = 0, PAWN = 1, KNIGHT = 2, BISHOP = 3, ROOK = 4, QUEEN = 5, KING = 6 }; @@ -316,6 +297,12 @@ inline Score operator/(Score s, int i) { return make_score(mg_value(s) / i, eg_value(s) / i); } +/// Weight score v by score w trying to prevent overflow +inline Score apply_weight(Score v, Score w) { + return make_score((int(mg_value(v)) * mg_value(w)) / 0x100, + (int(eg_value(v)) * eg_value(w)) / 0x100); +} + #undef ENABLE_OPERATORS_ON #undef ENABLE_SAFE_OPERATORS_ON @@ -333,13 +320,14 @@ const Value QueenValueEndgame = Value(0x9FE); extern const Value PieceValueMidgame[17]; // Indexed by Piece or PieceType extern const Value PieceValueEndgame[17]; extern int SquareDistance[64][64]; +extern uint8_t BitCount8Bit[256]; inline Color operator~(Color c) { return Color(c ^ 1); } inline Square operator~(Square s) { - return Square(s ^ 56); + return Square(s ^ 56); // Vertical flip SQ_A1 -> SQ_A8 } inline Value mate_in(int ply) { @@ -366,7 +354,7 @@ inline Square make_square(File f, Rank r) { return Square((r << 3) | f); } -inline bool square_is_ok(Square s) { +inline bool is_ok(Square s) { return s >= SQ_A1 && s <= SQ_H8; } @@ -379,7 +367,7 @@ inline Rank rank_of(Square s) { } inline Square mirror(Square s) { - return Square(s ^ 7); + return Square(s ^ 7); // Horizontal flip SQ_A1 -> SQ_H1 } inline Square relative_square(Color c, Square s) { @@ -451,7 +439,7 @@ inline int is_castle(Move m) { return (m & (3 << 14)) == (3 << 14); } -inline PieceType promotion_piece_type(Move m) { +inline PieceType promotion_type(Move m) { return PieceType(((m >> 12) & 3) + 2); }