]> git.sesse.net Git - stockfish/blobdiff - src/movegen.cpp
Last little touches to movegen
[stockfish] / src / movegen.cpp
index 742a91f739b8c0f7097068b52feadb376d3afb4f..afe561f55d623aacdc5f34270ba05014b321942a 100644 (file)
@@ -33,7 +33,6 @@
 namespace {
 
   struct PawnParams {
 namespace {
 
   struct PawnParams {
-
       Bitboard Rank3BB, Rank8BB;
       Rank RANK_8;
       SquareDelta DELTA_N, DELTA_NE, DELTA_NW;
       Bitboard Rank3BB, Rank8BB;
       Rank RANK_8;
       SquareDelta DELTA_N, DELTA_NE, DELTA_NW;
@@ -66,25 +65,7 @@ namespace {
   int generate_piece_blocking_evasions(const Position&, Bitboard, Bitboard, MoveStack*, int);
 
 
   int generate_piece_blocking_evasions(const Position&, Bitboard, Bitboard, MoveStack*, int);
 
 
-  /// Templates are defined here to avoid lookup issues with specializations
-
-  template<PieceType Piece>
-  int generate_piece_moves(const Position &pos, MoveStack *mlist, 
-                           Color side, Bitboard target) {
-    int n = 0;
-    for (int i = 0; i < pos.piece_count(side, Piece); i++)
-    {
-        Square from = pos.piece_list(side, Piece, i);
-        Bitboard b = pos.piece_attacks<Piece>(from) & target;
-        while (b)
-        {
-            Square to = pop_1st_bit(&b);
-            mlist[n++].move = make_move(from, to);
-        }
-    }
-    return n;
-  }
-
+  /// Templates with specializations are defined here to avoid lookup issues
 
   template<PieceType Piece>
   int generate_piece_checks(const Position& pos, Bitboard target, Bitboard dc,
 
   template<PieceType Piece>
   int generate_piece_checks(const Position& pos, Bitboard target, Bitboard dc,
@@ -134,23 +115,6 @@ namespace {
     }
     return n;
   }
     }
     return n;
   }
-
-  
-  template<PieceType Piece>
-  int generate_piece_blocking_evasions(const Position& pos, Bitboard b,
-                                       Bitboard blockSquares, MoveStack* mlist, int n) {
-    while (b)
-    {
-        Square from = pop_1st_bit(&b);
-        Bitboard bb = pos.piece_attacks<Piece>(from) & blockSquares;
-        while (bb)
-        {
-            Square to = pop_1st_bit(&bb);
-            mlist[n++].move = make_move(from, to);
-        }
-    }
-    return n;
-  }
 }
 
 
 }
 
 
@@ -623,6 +587,41 @@ Move generate_move_if_legal(const Position &pos, Move m, Bitboard pinned) {
 
 namespace {
 
 
 namespace {
 
+  template<PieceType Piece>
+  int generate_piece_moves(const Position &pos, MoveStack *mlist, 
+                           Color side, Bitboard target) {
+    int n = 0;
+    for (int i = 0; i < pos.piece_count(side, Piece); i++)
+    {
+        Square from = pos.piece_list(side, Piece, i);
+        Bitboard b = pos.piece_attacks<Piece>(from) & target;
+        while (b)
+        {
+            Square to = pop_1st_bit(&b);
+            mlist[n++].move = make_move(from, to);
+        }
+    }
+    return n;
+  }
+
+
+  template<PieceType Piece>
+  int generate_piece_blocking_evasions(const Position& pos, Bitboard b,
+                                       Bitboard blockSquares, MoveStack* mlist, int n) {
+    while (b)
+    {
+        Square from = pop_1st_bit(&b);
+        Bitboard bb = pos.piece_attacks<Piece>(from) & blockSquares;
+        while (bb)
+        {
+            Square to = pop_1st_bit(&bb);
+            mlist[n++].move = make_move(from, to);
+        }
+    }
+    return n;
+  }
+
+
   template<Color C>
   int generate_pawn_captures(const Position& pos, MoveStack* mlist) {
 
   template<Color C>
   int generate_pawn_captures(const Position& pos, MoveStack* mlist) {
 
@@ -814,6 +813,7 @@ namespace {
     return n;
   }
 
     return n;
   }
 
+
   template<Color C>
   int generate_pawn_blocking_evasions(const Position& pos, Bitboard not_pinned,
                                       Bitboard blockSquares, MoveStack* mlist, int n) {
   template<Color C>
   int generate_pawn_blocking_evasions(const Position& pos, Bitboard not_pinned,
                                       Bitboard blockSquares, MoveStack* mlist, int n) {