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 case_t const& cf, int8_t
const ri, int8_t
const ci)
const = 0;
177 int8_t
const ri, int8_t
const ci,
183 int8_t
const ci, int8_t
const ri,
190#pragma GCC diagnostic pop
206 case_t const& cf, int8_t
const ri, int8_t
const ci)
const override;
211 int8_t
const ri, int8_t
const ci,
226 case_t const& cf, int8_t
const ri, int8_t
const ci)
const override;
231 int8_t
const ri, int8_t
const ci,
236#pragma GCC diagnostic push
237#pragma GCC diagnostic ignored "-Wunused-parameter"
255 int8_t
const ri, int8_t
const ci)
const override
263 int8_t
const ri, int8_t
const ci,
267 case_t const& cf)
override
275#pragma GCC diagnostic pop
297 int8_t
const ri, int8_t
const ci)
const override;
299 case_t const& cf)
override;
318 int8_t
const ci)
const;
320 int8_t
const ci)
const;
333 int8_t
const ri, int8_t
const ci)
const override;
335 case_t const& cf)
override;
354 int8_t
const ci)
const;
356 int8_t
const ci)
const;
377 case_t const& cf)
override;
391 case_t const& cf)
override;
414 case_t const& cf)
override;
428 case_t const& cf)
override;
451 case_t const& cf)
override;
465 case_t const& cf)
override;
488 case_t const& cf)
override;
502 case_t const& cf)
override;
525 case_t const& cf)
override;
539 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
static movenum_t addNonCapturePromotionMove(bBasicBoard const &b, case_t const &cf, bMoveList &ml)
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
static movenum_t addNonCapturePawnMove(bBasicBoard const &b, case_t const &cf, bMoveList &ml)
Class static function Test move is possible, single step move non capture move.
static movenum_t addCapturePawnMove(bBasicBoard const &b, case_t const &cf, int8_t const ci, bMoveList &ml)
bool canMovePreflightCheck(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.
static movenum_t addEPMove(bBasicBoard const &b, case_t const &cf, int8_t const ci, bMoveList &ml)
Test move is possible, e.p.
static movenum_t addCapturePromotionMove(bBasicBoard const &b, case_t const &cf, int8_t const ci, bMoveList &ml)
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
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 canMovePreflightCheck(bBasicBoard &b, case_t const &cf, int8_t const ri, int8_t const ci) const 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 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 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
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
virtual bool canMovePreflightCheck(bBasicBoard &b, case_t const &cf, int8_t const ri, int8_t const ci) 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
static 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)
Class static function 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 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
bool canMovePreflightCheck(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 GenerateMoves(bBasicBoard const &b, case_t const &cf, bMoveList &ml) override
static movenum_t addCapturePromotionMove(bBasicBoard const &b, case_t const &cf, int8_t const ci, bMoveList &ml)
Test move is possible, single step move capture only move.
static movenum_t addNonCapturePromotionMove(bBasicBoard const &b, case_t const &cf, bMoveList &ml)
Test move is possible, single step move non capture move.
static movenum_t addCapturePawnMove(bBasicBoard const &b, case_t const &cf, int8_t const ci, bMoveList &ml)
static movenum_t addEPMove(bBasicBoard const &b, case_t const &cf, int8_t const ci, bMoveList &ml)
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
static movenum_t addNonCapturePawnMove(bBasicBoard const &b, case_t const &cf, bMoveList &ml)
Class static function Test move is possible, single step move non capture move.
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