- template<>
- FORCE_INLINE MoveStack* generate_direct_checks<PAWN>(const Position& p, MoveStack* m, Color us, Bitboard dc, Square ksq) {
-
- return us == WHITE ? generate_pawn_moves<WHITE, MV_NON_CAPTURE_CHECK>(p, m, dc, ksq)
- : generate_pawn_moves<BLACK, MV_NON_CAPTURE_CHECK>(p, m, dc, ksq);
- }
-
-
- template<PieceType Pt, MoveType Type>
- FORCE_INLINE MoveStack* generate_piece_moves(const Position& p, MoveStack* m, Color us, Bitboard t) {
-
- assert(Pt == PAWN);
- return us == WHITE ? generate_pawn_moves<WHITE, Type>(p, m, t, SQ_NONE)
- : generate_pawn_moves<BLACK, Type>(p, m, t, SQ_NONE);
- }
+ template<GenType Type> FORCE_INLINE
+ MoveStack* generate_all(const Position& pos, MoveStack* mlist, Color us,
+ Bitboard target, const CheckInfo* ci = NULL) {