Redefine enum CastleRight
authorMarco Costalba <mcostalba@gmail.com>
Sat, 26 May 2012 08:51:16 +0000 (09:51 +0100)
committerMarco Costalba <mcostalba@gmail.com>
Sat, 26 May 2012 09:03:35 +0000 (10:03 +0100)
To be aligned with PolyGlot book castle right definitions.

This will be used by next patch.

No functional change.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
src/position.h
src/types.h

index d0087c3..6351f58 100644 (file)
@@ -302,7 +302,7 @@ inline int Position::can_castle(CastleRight f) const {
 }
 
 inline int Position::can_castle(Color c) const {
-  return st->castleRights & ((WHITE_OO | WHITE_OOO) << c);
+  return st->castleRights & ((WHITE_OO | WHITE_OOO) << (2 * c));
 }
 
 inline bool Position::castle_impeded(Color c, CastlingSide s) const {
index 02e2d45..bbfd0c7 100644 (file)
@@ -128,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
 };
@@ -348,7 +348,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)  {