]> git.sesse.net Git - stockfish/blobdiff - src/position.h
Micro-optimize king evaluation
[stockfish] / src / position.h
index 946608c657672b743edfa3c39c4dd337a7b4acb6..e67dfbd49e165fb295af33d5691062cbdb0a5038 100644 (file)
@@ -111,10 +111,10 @@ public:
   int piece_count(Color c, PieceType pt) const;
 
   // Castling
-  bool can_castle(CastleRight f) const;
-  bool can_castle(Color c) const;
-  bool castle_impeded(CastleRight f) const;
-  Square castle_rook_square(CastleRight f) const;
+  int can_castle(CastleRight f) const;
+  int can_castle(Color c) const;
+  bool castle_impeded(Color c, CastlingSide s) const;
+  Square castle_rook_square(Color c, CastlingSide s) const;
 
   // Checking
   bool in_check() const;
@@ -213,9 +213,9 @@ private:
   int index[64];               // [square]
 
   // Other info
-  int castleRightsMask[64];    // [square]
-  Square castleRookSquare[16]; // [castleRight]
-  Bitboard castlePath[16];     // [castleRight]
+  int castleRightsMask[64];      // [square]
+  Square castleRookSquare[2][2]; // [color][side]
+  Bitboard castlePath[2][2];     // [color][side]
   StateInfo startState;
   int64_t nodes;
   int startPosPly;
@@ -297,20 +297,20 @@ inline Square Position::king_square(Color c) const {
   return pieceList[c][KING][0];
 }
 
-inline bool Position::can_castle(CastleRight f) const {
+inline int Position::can_castle(CastleRight f) const {
   return st->castleRights & f;
 }
 
-inline bool Position::can_castle(Color c) const {
+inline int Position::can_castle(Color c) const {
   return st->castleRights & ((WHITE_OO | WHITE_OOO) << c);
 }
 
-inline bool Position::castle_impeded(CastleRight f) const {
-  return byTypeBB[ALL_PIECES] & castlePath[f];
+inline bool Position::castle_impeded(Color c, CastlingSide s) const {
+  return byTypeBB[ALL_PIECES] & castlePath[c][s];
 }
 
-inline Square Position::castle_rook_square(CastleRight f) const {
-  return castleRookSquare[f];
+inline Square Position::castle_rook_square(Color c, CastlingSide s) const {
+  return castleRookSquare[c][s];
 }
 
 template<PieceType Pt>