X-Git-Url: https://git.sesse.net/?p=stockfish;a=blobdiff_plain;f=src%2Ftypes.h;h=4a78cc81d03040080923e4b6c4ea1f1fe44b2e30;hp=9c997418afa28d4cf4a38ed35989887d11599709;hb=960a689769cb143afa364d3669940c18d0c3a503;hpb=44432f67d724573d0f6e3cfea6165c9b1d125d72 diff --git a/src/types.h b/src/types.h index 9c997418..4a78cc81 100644 --- a/src/types.h +++ b/src/types.h @@ -35,6 +35,7 @@ /// | only in 64-bit mode. For compiling requires hardware with /// | popcnt support. +#include #include #include @@ -127,11 +128,11 @@ inline bool operator<(const MoveStack& f, const MoveStack& s) { return f.score < s.score; } -enum CastleRight { +enum CastleRight { // Defined as in PolyGlot book hash key CASTLES_NONE = 0, WHITE_OO = 1, - BLACK_OO = 2, - WHITE_OOO = 4, + WHITE_OOO = 2, + BLACK_OO = 4, BLACK_OOO = 8, ALL_CASTLES = 15 }; @@ -311,16 +312,16 @@ inline Score apply_weight(Score v, Score w) { #undef ENABLE_OPERATORS_ON #undef ENABLE_SAFE_OPERATORS_ON -const Value PawnValueMidgame = Value(0x0C6); -const Value PawnValueEndgame = Value(0x102); -const Value KnightValueMidgame = Value(0x331); -const Value KnightValueEndgame = Value(0x34E); -const Value BishopValueMidgame = Value(0x344); -const Value BishopValueEndgame = Value(0x359); -const Value RookValueMidgame = Value(0x4F6); -const Value RookValueEndgame = Value(0x4FE); -const Value QueenValueMidgame = Value(0x9D9); -const Value QueenValueEndgame = Value(0x9FE); +const Value PawnValueMidgame = Value(198); +const Value PawnValueEndgame = Value(258); +const Value KnightValueMidgame = Value(817); +const Value KnightValueEndgame = Value(846); +const Value BishopValueMidgame = Value(836); +const Value BishopValueEndgame = Value(857); +const Value RookValueMidgame = Value(1270); +const Value RookValueEndgame = Value(1278); +const Value QueenValueMidgame = Value(2521); +const Value QueenValueEndgame = Value(2558); extern const Value PieceValueMidgame[17]; // Indexed by Piece or PieceType extern const Value PieceValueEndgame[17]; @@ -334,6 +335,10 @@ inline Square operator~(Square s) { return Square(s ^ 56); // Vertical flip SQ_A1 -> SQ_A8 } +inline Square operator|(File f, Rank r) { + return Square((r << 3) | f); +} + inline Value mate_in(int ply) { return VALUE_MATE - ply; } @@ -347,7 +352,7 @@ inline Piece make_piece(Color c, PieceType pt) { } inline CastleRight make_castle_right(Color c, CastlingSide s) { - return CastleRight((s == KING_SIDE ? WHITE_OO : WHITE_OOO) << c); + return CastleRight(WHITE_OO << ((s == QUEEN_SIDE) + 2 * c)); } inline PieceType type_of(Piece p) { @@ -358,10 +363,6 @@ inline Color color_of(Piece p) { return Color(p >> 3); } -inline Square make_square(File f, Rank r) { - return Square((r << 3) | f); -} - inline bool is_ok(Square s) { return s >= SQ_A1 && s <= SQ_H8; } @@ -391,7 +392,7 @@ inline Rank relative_rank(Color c, Square s) { } inline bool opposite_colors(Square s1, Square s2) { - int s = s1 ^ s2; + int s = int(s1) ^ int(s2); return ((s >> 3) ^ s) & 1; }