template<MoveType Type>
MoveStack* generate(const Position& pos, MoveStack* mlist) {
- assert(pos.is_ok());
assert(!pos.in_check());
Color us = pos.side_to_move();
template<>
MoveStack* generate<MV_NON_CAPTURE_CHECK>(const Position& pos, MoveStack* mlist) {
- assert(pos.is_ok());
assert(!pos.in_check());
Bitboard b, dc;
template<>
MoveStack* generate<MV_EVASION>(const Position& pos, MoveStack* mlist) {
- assert(pos.is_ok());
assert(pos.in_check());
Bitboard b, target;
template<>
MoveStack* generate<MV_LEGAL>(const Position& pos, MoveStack* mlist) {
- assert(pos.is_ok());
-
MoveStack *last, *cur = mlist;
Bitboard pinned = pos.pinned_pieces();