Retire empty_squares()
authorMarco Costalba <mcostalba@gmail.com>
Sun, 19 Feb 2012 10:44:45 +0000 (11:44 +0100)
committerMarco Costalba <mcostalba@gmail.com>
Sun, 19 Feb 2012 10:50:50 +0000 (11:50 +0100)
Use ~pos.occupied_squares() instead and avoid to
hide the ~ computation.

No functional change.

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

index e2cc7b99d513265f9199be3a0d7ad8fab5a85533..612a87e577faec13cf342d1522a4b9abea107146 100644 (file)
@@ -155,7 +155,7 @@ namespace {
     // Single and double pawn pushes, no promotions
     if (Type != MV_CAPTURE)
     {
-        emptySquares = (Type == MV_QUIET ? target : pos.empty_squares());
+        emptySquares = (Type == MV_QUIET ? target : ~pos.occupied_squares());
 
         b1 = move_pawns<UP>(pawnsNotOn7)   & emptySquares;
         b2 = move_pawns<UP>(b1 & TRank3BB) & emptySquares;
@@ -193,7 +193,7 @@ namespace {
     if (pawnsOn7 && (Type != MV_EVASION || (target & TRank8BB)))
     {
         if (Type == MV_CAPTURE)
-            emptySquares = pos.empty_squares();
+            emptySquares = ~pos.occupied_squares();
 
         if (Type == MV_EVASION)
             emptySquares &= target;
@@ -246,7 +246,7 @@ namespace {
 
     if (*pl != SQ_NONE)
     {
-        target = ci.checkSq[Pt] & pos.empty_squares(); // Non capture checks only
+        target = ci.checkSq[Pt] & ~pos.occupied_squares(); // Non capture checks only
 
         do {
             from = *pl;
@@ -321,10 +321,10 @@ MoveStack* generate(const Position& pos, MoveStack* mlist) {
       target = pos.pieces(~us);
 
   else if (Type == MV_QUIET)
-      target = pos.empty_squares();
+      target = ~pos.occupied_squares();
 
   else if (Type == MV_NON_EVASION)
-      target = pos.pieces(~us) | pos.empty_squares();
+      target = pos.pieces(~us) | ~pos.occupied_squares();
 
   mlist = (us == WHITE ? generate_pawn_moves<WHITE, Type>(pos, mlist, target)
                        : generate_pawn_moves<BLACK, Type>(pos, mlist, target));
@@ -369,7 +369,7 @@ MoveStack* generate<MV_QUIET_CHECK>(const Position& pos, MoveStack* mlist) {
      if (pt == PAWN)
          continue; // Will be generated togheter with direct checks
 
-     Bitboard b = pos.attacks_from(Piece(pt), from) & pos.empty_squares();
+     Bitboard b = pos.attacks_from(Piece(pt), from) & ~pos.occupied_squares();
 
      if (pt == KING)
          b &= ~PseudoAttacks[QUEEN][ci.ksq];
index 7db5fa453ff9e644b1a9806e26b917a9861c5e63..48e8fbe419baf62ff913f06e2f4a8c44e55bfc7c 100644 (file)
@@ -108,7 +108,6 @@ public:
   Color side_to_move() const;
 
   // Bitboard representation of the position
-  Bitboard empty_squares() const;
   Bitboard occupied_squares() const;
   Bitboard pieces(Color c) const;
   Bitboard pieces(PieceType pt) const;
@@ -291,10 +290,6 @@ inline Bitboard Position::occupied_squares() const {
   return occupied;
 }
 
-inline Bitboard Position::empty_squares() const {
-  return ~occupied;
-}
-
 inline Bitboard Position::pieces(Color c) const {
   return byColorBB[c];
 }
@@ -356,11 +351,11 @@ inline Bitboard Position::attacks_from<PAWN>(Square s, Color c) const {
 }
 
 inline Bitboard Position::attacks_from(Piece p, Square s) const {
-  return attacks_from(p, s, occupied_squares());
+  return attacks_from(p, s, occupied);
 }
 
 inline Bitboard Position::attackers_to(Square s) const {
-  return attackers_to(s, occupied_squares());
+  return attackers_to(s, occupied);
 }
 
 inline Bitboard Position::checkers() const {