87 : m_piece{std::move(bp.m_piece)}
123 {
if (bp.m_piece) os << bp.m_piece;
134#pragma GCC diagnostic push
135#pragma GCC diagnostic ignored "-Wunused-parameter"
173 int8_t
const ri, int8_t
const ci,
174 uint_fast8_t nMax)
const = 0;
176 int8_t
const ri, int8_t
const ci)
const = 0;
180 int8_t
const ri, int8_t
const ci,
186 int8_t
const ci, int8_t
const ri,
193#pragma GCC diagnostic pop
209 int8_t
const ri, int8_t
const ci,
210 uint_fast8_t nMax = 1)
const override;
212 int8_t
const ri, int8_t
const ci)
const override;
217 int8_t
const ri, int8_t
const ci,
232 int8_t
const ri, int8_t
const ci,
233 uint_fast8_t nMax = 1)
const override;
235 int8_t
const ri, int8_t
const ci)
const override;
240 int8_t
const ri, int8_t
const ci,
245#pragma GCC diagnostic push
246#pragma GCC diagnostic ignored "-Wunused-parameter"
264 int8_t
const ri, int8_t
const ci,
265 uint_fast8_t nMax = 0)
const override
269 int8_t
const ri, int8_t
const ci)
const override
277 int8_t
const ri, int8_t
const ci,
281 case_t const& cf)
override
289#pragma GCC diagnostic pop
310 case_t const& cf)
override;
329 int8_t
const ci)
const;
331 int8_t
const ci)
const;
343 case_t const& cf)
override;
362 int8_t
const ci)
const;
364 int8_t
const ci)
const;
385 case_t const& cf)
override;
399 case_t const& cf)
override;
422 case_t const& cf)
override;
436 case_t const& cf)
override;
459 case_t const& cf)
override;
473 case_t const& cf)
override;
496 case_t const& cf)
override;
510 case_t const& cf)
override;
533 case_t const& cf)
override;
547 case_t const& cf)
override;
bool hasValidMovePreflightCheck(bBasicBoard &b, case_t const &cf) override
movenum_t GenerateMoves(bBasicBoard const &b, case_t const &cf, bMoveList &ml) override
movenum_t GenerateMoves(bBasicBoard const &b, case_t const &cf, bMoveList &ml) override
bool hasValidMovePreflightCheck(bBasicBoard &b, case_t const &cf) override
movenum_t GenerateMoves(bBasicBoard const &b, case_t const &cf, bMoveList &ml) override
bool hasValidMovePreflightCheck(bBasicBoard &b, case_t const &cf) override
movenum_t addEPMove(bBasicBoard const &b, case_t const &cf, int8_t const ci, bMoveList &ml) const
Test move is possible, e.p.
movenum_t addNonCapturePawnMove(bBasicBoard const &b, case_t const &cf, bMoveList &ml) const
Test move is possible, single step move non capture move.
movenum_t addCapturePawnMove(bBasicBoard const &b, case_t const &cf, int8_t const ci, bMoveList &ml) const
movenum_t addCapturePromotionMove(bBasicBoard const &b, case_t const &cf, int8_t const ci, bMoveList &ml) const
movenum_t addNonCapturePromotionMove(bBasicBoard const &b, case_t const &cf, bMoveList &ml) const
movenum_t GenerateMoves(bBasicBoard const &b, case_t const &cf, bMoveList &ml) override
bool hasValidMovePreflightCheck(bBasicBoard &b, case_t const &cf) override
check if there is at least one move possible currently, relies on full move generation for pawn
bool canMovePreflightCheck(bBasicBoard &b, case_t const &cf, case_t const &ct) const override
Check if any could be added by just checking there.
bool isAttacked(bBasicBoard const &b, case_t const &cf) const override
bool canPawnMovePreflightCheck(bBasicBoard &b, case_t const &cf, int8_t const ri, int8_t const ci) const override
Check if pawn move could be added by just checking there is not check, case of possible promotion.
movenum_t addMoves(bBasicBoard const &b, case_t const &cf, int8_t const ri, int8_t const ci, bMoveList &ml) const override
movenum_t addMove(bBasicBoard const &b, case_t const &cf, case_t const &ct, bMoveList &ml) const override
movenum_t GenerateMoves(bBasicBoard const &b, case_t const &cf, bMoveList &ml) override
bool hasValidMovePreflightCheck(bBasicBoard &b, case_t const &cf) override
movenum_t GenerateMoves(bBasicBoard const &b, case_t const &cf, bMoveList &ml) override
bool hasValidMovePreflightCheck(bBasicBoard &b, case_t const &cf) override
position on board, defined as 255 if invalid used primarily to compose a move or a source or destinat...
movenum_t GenerateMoves(bBasicBoard const &b, case_t const &cf, bMoveList &ml) override
bool hasValidMovePreflightCheck(bBasicBoard &b, case_t const &cf) override
movenum_t addMove(bBasicBoard const &b, case_t const &cf, case_t const &ct, bMoveList &ml) const override
movenum_t addMoves(bBasicBoard const &b, case_t const &cf, int8_t const ri, int8_t const ci, bMoveList &ml) const override
bool canMovePreflightCheck(bBasicBoard &b, case_t const &cf, int8_t const ri, int8_t const ci, uint_fast8_t nMax=0) const override
bool canPawnMovePreflightCheck(bBasicBoard &b, case_t const &cf, int8_t const ri, int8_t const ci) const override
bool isAttacked(bBasicBoard const &b, case_t const &cf) const override
bool canMovePreflightCheck(bBasicBoard &b, case_t const &cf, case_t const &ct) const override
virtual bool canPawnMovePreflightCheck(bBasicBoard &b, case_t const &cf, int8_t const ri, int8_t const ci) const =0
virtual bool canMovePreflightCheck(bBasicBoard &b, case_t const &cf, case_t const &ct) const =0
constexpr bool isWhite() const
constexpr bool isEmpty() const
bPieceColour & operator=(bPieceColour const &)=delete
bPieceColour(bPieceColour const &)=delete
constexpr side_t toMove() const
bPieceColour(bPieceColour &&)=delete
virtual bool isAttacked(bBasicBoard const &b, case_t const &cf) const
virtual bool canMovePreflightCheck(bBasicBoard &b, case_t const &cf, int8_t const ri, int8_t const ci, uint_fast8_t nMax) const =0
constexpr bool isBlack() const
virtual movenum_t addMoves(bBasicBoard const &b, case_t const &cf, int8_t const ri, int8_t const ci, bMoveList &ml) const =0
constexpr side_t opponent() const
virtual movenum_t addMove(bBasicBoard const &b, case_t const &cf, case_t const &ct, bMoveList &ml) const =0
bool isAttackedBySlider(bBasicBoard const &b, case_t cf, column_t fromcol, rank_t fromrank, int8_t const ci, int8_t const ri, piece_t const cPiece, piece_t const cPiece2) const
Return true if position is attacked by opponent respecting move offsets.
bPieceColour & operator=(bPieceColour &&)=delete
bPiece & operator=(bPiece &&)=delete
static cpiece_t getPieceChar(piece_t const piece)
static class member function
static bPiece * getPieceClass(piece_t const piece)
static class member function
bPiece & operator=(bPiece const &)=delete
constexpr piece_t getPiece() const
bPiece(bPiece const &)=delete
friend std::ostream & operator<<(std::ostream &os, bPiece const &bp)
static bool isOpponent(side_t const s, piece_t const piece)
static class member function
static bool isOwnColour(side_t const s, piece_t const piece)
static class member function
static bool isBlackPiece(piece_t const p)
static class member function
static bool isWhitePiece(piece_t const p)
static class member function
virtual movenum_t GenerateMoves(bBasicBoard const &b, case_t const &cf, bMoveList &ml)=0
virtual bool hasValidMovePreflightCheck(bBasicBoard &b, case_t const &cf)=0
static const std::string getPieceStrUpper(piece_t const piece)
static class member function
movenum_t GenerateMoves(bBasicBoard const &b, case_t const &cf, bMoveList &ml) override
bool hasValidMovePreflightCheck(bBasicBoard &b, case_t const &cf) override
movenum_t GenerateMoves(bBasicBoard const &b, case_t const &cf, bMoveList &ml) override
bool hasValidMovePreflightCheck(bBasicBoard &b, case_t const &cf) override
movenum_t GenerateMoves(bBasicBoard const &b, case_t const &cf, bMoveList &ml) override
bool hasValidMovePreflightCheck(bBasicBoard &b, case_t const &cf) override
movenum_t GenerateMoves(bBasicBoard const &b, case_t const &cf, bMoveList &ml) override
movenum_t addNonCapturePawnMove(bBasicBoard const &b, case_t const &cf, bMoveList &ml) const
Test move is possible, single step move non capture move.
movenum_t addCapturePromotionMove(bBasicBoard const &b, case_t const &cf, int8_t const ci, bMoveList &ml) const
Test move is possible, single step move capture only move.
movenum_t addCapturePawnMove(bBasicBoard const &b, case_t const &cf, int8_t const ci, bMoveList &ml) const
movenum_t addEPMove(bBasicBoard const &b, case_t const &cf, int8_t const ci, bMoveList &ml) const
Test move is possible, e.p.
bool hasValidMovePreflightCheck(bBasicBoard &b, case_t const &cf) override
check if there is at least one move possible currently, relies on full move generation for pawn
movenum_t addNonCapturePromotionMove(bBasicBoard const &b, case_t const &cf, bMoveList &ml) const
Test move is possible, single step move non capture move.
bool canPawnMovePreflightCheck(bBasicBoard &b, case_t const &cf, int8_t const ri, int8_t const ci) const override
Check if pawn move could be added by just checking there is not check, case of possible promotion.
movenum_t addMove(bBasicBoard const &b, case_t const &cf, case_t const &ct, bMoveList &ml) const override
Check for in-check position, used for King and Knight.
bool canMovePreflightCheck(bBasicBoard &b, case_t const &cf, case_t const &ct) const override
Check if any could be added by just checking there.
bool isAttacked(bBasicBoard const &b, case_t const &cf) const override
Check if piece on position is attacked, start with piece always on board and then with pieces with gr...
movenum_t addMoves(bBasicBoard const &b, case_t const &cf, int8_t const ri, int8_t const ci, bMoveList &ml) const override
Add moves for Queen, Rook and Bishop.
bool hasValidMovePreflightCheck(bBasicBoard &b, case_t const &cf) override
movenum_t GenerateMoves(bBasicBoard const &b, case_t const &cf, bMoveList &ml) override
bool hasValidMovePreflightCheck(bBasicBoard &b, case_t const &cf) override
movenum_t GenerateMoves(bBasicBoard const &b, case_t const &cf, bMoveList &ml) override