From aa94f2f4c28ffed69b647ccea3591903e74c4eb0 Mon Sep 17 00:00:00 2001 From: Marco Costalba Date: Sun, 19 Oct 2008 18:19:16 +0200 Subject: [PATCH] Last little touches to movegen No functional change. Signed-off-by: Marco Costalba --- src/movegen.cpp | 74 ++++++++++++++++++++++++------------------------- src/movegen.h | 3 +- 2 files changed, 38 insertions(+), 39 deletions(-) diff --git a/src/movegen.cpp b/src/movegen.cpp index 742a91f7..afe561f5 100644 --- a/src/movegen.cpp +++ b/src/movegen.cpp @@ -33,7 +33,6 @@ namespace { struct PawnParams { - 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); - /// Templates are defined here to avoid lookup issues with specializations - - template - 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(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 int generate_piece_checks(const Position& pos, Bitboard target, Bitboard dc, @@ -134,23 +115,6 @@ namespace { } return n; } - - - template - 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(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 { + template + 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(from) & target; + while (b) + { + Square to = pop_1st_bit(&b); + mlist[n++].move = make_move(from, to); + } + } + return n; + } + + + template + 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(from) & blockSquares; + while (bb) + { + Square to = pop_1st_bit(&bb); + mlist[n++].move = make_move(from, to); + } + } + return n; + } + + template int generate_pawn_captures(const Position& pos, MoveStack* mlist) { @@ -814,6 +813,7 @@ namespace { return n; } + template int generate_pawn_blocking_evasions(const Position& pos, Bitboard not_pinned, Bitboard blockSquares, MoveStack* mlist, int n) { diff --git a/src/movegen.h b/src/movegen.h index 93c1c4ab..16923dcc 100644 --- a/src/movegen.h +++ b/src/movegen.h @@ -36,7 +36,6 @@ extern int generate_noncaptures(const Position &pos, MoveStack *mlist); extern int generate_checks(const Position &pos, MoveStack *mlist, Bitboard dc); extern int generate_evasions(const Position &pos, MoveStack *mlist); extern int generate_legal_moves(const Position &pos, MoveStack *mlist); -extern Move generate_move_if_legal(const Position &pos, Move m, - Bitboard pinned); +extern Move generate_move_if_legal(const Position &pos, Move m, Bitboard pinned); #endif // !defined(MOVEGEN_H_INCLUDED) -- 2.39.2