Add behind_bb() helper to simplify code logic
authorMarco Costalba <mcostalba@gmail.com>
Tue, 9 Dec 2008 16:39:40 +0000 (17:39 +0100)
committerMarco Costalba <mcostalba@gmail.com>
Tue, 9 Dec 2008 23:14:24 +0000 (00:14 +0100)
No functional change.

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

index b193786cb8e28eae2096cbcb9095b14dd006cf5c..847132c499fdc41df9cddf97e44f01c90dd4bb7f 100644 (file)
@@ -236,6 +236,19 @@ inline Bitboard in_front_bb(Color c, Square s) {
 }
 
 
+/// behind_bb() takes a color and a rank or square as input, and returns a
+/// bitboard representing all the squares on all ranks behind of the rank
+/// (or square), from the given color's point of view.
+
+inline Bitboard behind_bb(Color c, Rank r) {
+  return InFrontBB[opposite_color(c)][r];
+}
+
+inline Bitboard behind_bb(Color c, Square s) {
+  return in_front_bb(opposite_color(c), square_rank(s));
+}
+
+
 /// ray_bb() gives a bitboard representing all squares along the ray in a
 /// given direction from a given square.
 
index 965d1ea387f47352fb5cb5773219cd6a01ef0c6d..3a8f88bb1f1a646d1a71fdf750f22a4a8d1cfc93 100644 (file)
@@ -300,7 +300,7 @@ PawnInfo *PawnInfoTable::get_pawn_info(const Position &pos) {
             || isolated
             || chain
             || (pos.pawn_attacks(us, s) & theirPawns)
-            || (ourPawns & in_front_bb(them, r) & neighboring_files_bb(f)))
+            || (ourPawns & behind_bb(us, r) & neighboring_files_bb(f)))
             backward = false;
         else
         {
@@ -324,8 +324,8 @@ PawnInfo *PawnInfoTable::get_pawn_info(const Position &pos) {
         // Test for candidate passed pawn
         candidate =    !passed
                      && pos.file_is_half_open(them, f)
-                     && (  count_1s_max_15(neighboring_files_bb(f) & (in_front_bb(them, r) | rank_bb(r)) & ourPawns)
-                         - count_1s_max_15(neighboring_files_bb(f) &  in_front_bb(us, r)                 & theirPawns)
+                     && (  count_1s_max_15(neighboring_files_bb(f) & (behind_bb(us, r) | rank_bb(r)) & ourPawns)
+                         - count_1s_max_15(neighboring_files_bb(f) & in_front_bb(us, r)              & theirPawns)
                          >= 0);
 
         // In order to prevent doubled passed pawns from receiving a too big