- int generate_pawn_checks(const Position&, Bitboard, Square, MoveStack*);
+ inline int generate_pawn_blocking_evasions(const Position& p, Bitboard np, Bitboard bs, MoveStack* m) {
+ return do_generate_pawn_blocking_evasions<WHITE, Rank8BB, Rank3BB, DELTA_N>(p, np, bs, m);
+ }
+ template<>
+ inline int generate_pawn_blocking_evasions<BLACK>(const Position& p, Bitboard np, Bitboard bs, MoveStack* m) {
+ return do_generate_pawn_blocking_evasions<BLACK, Rank1BB, Rank6BB, DELTA_S>(p, np, bs, m);
+ }
+
+ // Template generate_pawn_checks() with specializations
+ template<Color, Color, Bitboard, Bitboard, SquareDelta>
+ int do_generate_pawn_checks(const Position&, Bitboard, Square, MoveStack*);