Inline pinned_pieces() and discovered_check_candidates()
authorMarco Costalba <mcostalba@gmail.com>
Sun, 30 Oct 2011 17:16:28 +0000 (18:16 +0100)
committerMarco Costalba <mcostalba@gmail.com>
Sun, 30 Oct 2011 17:48:23 +0000 (18:48 +0100)
No functional change.

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

index 59de12886e513f55b6ba2ffae18cfe4ce96986bd..fa1f9d20ad9d0dae3dc8a7f501655a3a4157bd22 100644 (file)
@@ -84,11 +84,11 @@ inline Bitboard bit_is_set(Bitboard b, Square s) {
   return b & SetMaskBB[s];
 }
 
-inline void set_bit(Bitboard *b, Square s) {
+inline void set_bit(Bitboardb, Square s) {
   *b |= SetMaskBB[s];
 }
 
-inline void clear_bit(Bitboard *b, Square s) {
+inline void clear_bit(Bitboardb, Square s) {
   *b &= ClearMaskBB[s];
 }
 
@@ -100,7 +100,7 @@ inline Bitboard make_move_bb(Square from, Square to) {
   return SetMaskBB[from] | SetMaskBB[to];
 }
 
-inline void do_move_bb(Bitboard *b, Bitboard move_bb) {
+inline void do_move_bb(Bitboardb, Bitboard move_bb) {
   *b ^= move_bb;
 }
 
index abde14593bbf833914be4651387e867770262744..4160822b1de5602fdc15ff1dc5ad0f727eb445da 100644 (file)
@@ -349,7 +349,6 @@ void Position::print(Move move) const {
 /// king) pieces for the given color. Or, when template parameter FindPinned is
 /// false, the function return the pieces of the given color candidate for a
 /// discovery check against the enemy king.
-
 template<bool FindPinned>
 Bitboard Position::hidden_checkers() const {
 
@@ -373,24 +372,10 @@ Bitboard Position::hidden_checkers() const {
   return result;
 }
 
+// Explicit template instantiations
+template Bitboard Position::hidden_checkers<true>() const;
+template Bitboard Position::hidden_checkers<false>() const;
 
-/// Position:pinned_pieces() returns a bitboard of all pinned (against the
-/// king) pieces for the side to move.
-
-Bitboard Position::pinned_pieces() const {
-
-  return hidden_checkers<true>();
-}
-
-
-/// Position:discovered_check_candidates() returns a bitboard containing all
-/// pieces for the side to move which are candidates for giving a discovered
-/// check.
-
-Bitboard Position::discovered_check_candidates() const {
-
-  return hidden_checkers<false>();
-}
 
 /// Position::attackers_to() computes a bitboard of all pieces which attacks a
 /// given square. Slider attacks use occ bitboard as occupancy.
@@ -405,6 +390,7 @@ Bitboard Position::attackers_to(Square s, Bitboard occ) const {
         | (attacks_from<KING>(s)        & pieces(KING));
 }
 
+
 /// Position::attacks_from() computes a bitboard of all attacks of a given piece
 /// put in a given square. Slider attacks use occ bitboard as occupancy.
 
@@ -503,8 +489,8 @@ bool Position::pl_move_is_legal(Move m, Bitboard pinned) const {
 
 
 /// Position::move_is_legal() takes a random move and tests whether the move
-/// is legal. This version is not very fast and should be used only
-/// in non time-critical paths.
+/// is legal. This version is not very fast and should be used only in non
+/// time-critical paths.
 
 bool Position::move_is_legal(const Move m) const {
 
index ea7f37c685dcfd98d74683829cfc67ee893210b2..7842ed8b337254ea5d2db61f537644056146e212 100644 (file)
@@ -216,11 +216,9 @@ private:
   void set_castle_right(Square ksq, Square rsq);
   bool move_is_legal(const Move m) const;
 
-  // Helper functions for doing and undoing moves
+  // Helper template functions
   template<bool Do> void do_castle_move(Move m);
-
-  template<bool FindPinned>
-  Bitboard hidden_checkers() const;
+  template<bool FindPinned> Bitboard hidden_checkers() const;
 
   // Computing hash keys from scratch (for initialization and debugging)
   Key compute_key() const;
@@ -384,6 +382,14 @@ inline bool Position::in_check() const {
   return st->checkersBB != 0;
 }
 
+inline Bitboard Position::discovered_check_candidates() const {
+  return hidden_checkers<false>();
+}
+
+inline Bitboard Position::pinned_pieces() const {
+  return hidden_checkers<true>();
+}
+
 inline bool Position::pawn_is_passed(Color c, Square s) const {
   return !(pieces(PAWN, flip(c)) & passed_pawn_mask(c, s));
 }