8#if !defined(MOVELIST_H)
22 , m_lmoves{ml.m_lmoves}
24 , m_nQSMoves{ml.m_nQSMoves}
25 , m_bestmoveid{ml.m_bestmoveid}
32 m_lmoves = ml.m_lmoves;
34 m_nQSMoves = ml.m_nQSMoves;
35 m_bestmoveid = ml.m_bestmoveid;
50 {
return static_cast<movenum_t>(m_lmoves.size()); }
52 {
return m_nQSMoves; }
55 {
return m_lmoves[moveid - 1]; }
57 {
return m_lmoves[moveid - 1].getFromTo(); }
59 {
return m_lmoves[moveid - 1].getBMoveT(); }
68 {
for (
bMove& m: m_lmoves) m.clearScore(); }
70 {
for (
bMove& m: m_lmoves) m.clearScore(sc); }
79 {
return m_lmoves[m_bestmoveid - 1].getScore(); }
81 { m_lmoves[m_bestmoveid - 1].setScore(score); }
85 { m_lmoves[moveid - 1].setScore(score); }
88 {
return m_bestmoveid; }
108 {
return flags & 0x01; }
112 { flags &= ~(0x01); }
114 {
return flags & 0x02; }
116 {
return !(flags & 0x02); }
120 { flags &= ~(0x02); }
124 {
return flags & 0x04; }
128 { flags &= ~(0x04); }
136 { flags &= ~(0x08); }
139 {
return !(flags & 0x10); }
141 {
return flags & 0x10; }
143 {
return !(flags & 0x20); }
145 {
return flags & 0x20; }
150 inline bool bestMoveHasImproved(
bScore const score)
const
152 inline bool minMoveHasImproved(
bScore const score)
const
155 bool bestMoveHasImprovedNS(
bScore const score)
const;
156 void addMoveToList(bBasicBoard
const& b, bMove& m,
bool const isCheckMove);
constexpr bool isGenerated() const
movenum_t generateMoves(bBasicBoard const &b)
generate moves if not yet generated
void setScoreOfMoveUnsorted(movenum_t const moveid, bScore const score)
Store score of move and update best move.
void setBestMoveScore(movenum_t const moveid, bScore const score)
constexpr bScore getBestMoveScore() const
bMoveList & operator=(bMoveList &&ml)=delete
void setMinScoreOfMoveUnsorted(movenum_t const moveid, bScore const score)
Store score of move and update best move.
constexpr bool isNoKeepScores() const
constexpr bool isKeepScores() const
movenum_t addBlackMoveIfValid(bBasicBoard const &b, bMove &m)
Only add move to movelist if valid.
constexpr bool isNoNeedSorted() const
void setMoveScore(movenum_t const moveid, bScore const score)
bool setScoreOfMove(movenum_t const moveid, bScore const score)
Store score of move and update best move.
movenum_t addBlackPromotionIfValid(bBasicBoard const &b, bMove &m)
Only add move to movelist if valid.
constexpr fromto_t getFromTo(movenum_t const moveid) const
void clearIsPossibleMove()
bMoveList(bMoveList &&ml)=delete
constexpr bmove_t getBMoveT(movenum_t const moveid) const
constexpr movenum_t getBestMoveId() const
constexpr bool isPossibleMove() const
bMoveList & operator=(bMoveList const &ml)
constexpr bool isOnlyMove() const
friend std::ostream & operator<<(std::ostream &os, bMoveList const &ml)
bMoveList(bMoveList const &ml)=delete
constexpr bool isNotSorted() const
movenum_t addWhiteMoveIfValid(bBasicBoard const &b, bMove &m)
Only add move to movelist if valid.
constexpr movenum_t getNumberOfMoves() const
bool atLeastOneMovePossible(bBasicBoard &b)
see if at least one move can be played e.g.
constexpr movenum_t getNumberOfQSMoves() const
void clearScores(bScore const sc)
void setBestMoveId(movenum_t const n)
movenum_t adjustQSMoves()
reduce the number of QS moves to filter out the best ones only
constexpr bool isNeedSorted() const
bMove const & operator[](movenum_t const moveid) const
void setBestMoveScore(bScore const score)
constexpr bool isSorted() const
movenum_t addWhitePromotionIfValid(bBasicBoard const &b, bMove &m)
Only add move to movelist if valid.
void sortMoves(bool const bFastSort)
sort moves and update bestmove id if less than 5 moves, sort all if more than 5 moves,...
bool setMinScoreOfMove(movenum_t const moveid, bScore const score)
Store score of move and update best move (minimum)
constexpr bScore realScore() const
std::vector< bMove > movelist_t