13#pragma GCC diagnostic push
14#pragma GCC diagnostic ignored "-Weffc++"
36#pragma GCC diagnostic pop
57 auto getSiblings = [m](bBoard
const& bs) ->
movelist_t {
63 if (bm.
to() == m.
to()) {
65 && (bs.getPiece(bm.
from()) == bs.getPiece(m.
from()))) {
67 siblings.push_back(bm);
73 alternatives = getSiblings(b);
78 m_move = (bCase(m.
from()).operator std::string()).substr(0,1);
84 m_move += bCase(m.
to()).operator std::string();
91 if (alternatives.size() > 0) {
94 if (std::none_of(alternatives.begin(), alternatives.end(),
96 { return bm.fromcolumn() == m.fromcolumn(); })) {
98 m_move.insert(1, (bCase(m.
from()).operator std::string()).substr(0, 1));
99 }
else if (std::none_of(alternatives.begin(), alternatives.end(),
101 { return bm.fromrank() == m.fromrank(); })) {
103 m_move.insert(1, (bCase(m.
from()).operator std::string()).substr(1, 1));
106 m_move.insert(1, (bCase(m.
from()).operator std::string()));
118 if (!m_move.size())
throw std::logic_error(
"empty bPgnMove");
124std::string bPgnMove::getPromotionDecorationStr(
ppiece_t const piece)
135 throw std::logic_error(
"superfluous call to bPgnMove::getPromotionDecorationStr");
141#pragma GCC diagnostic push
142#pragma GCC diagnostic ignored "-Weffc++"
151 m_pmoves.push_back(pm);
156#pragma GCC diagnostic pop
162 for (
bPgnMove const& m: mpl.m_pmoves) {
This is the main include file, needs to be included before any other include.
constexpr piece_t getPiece(case_t const cf) const
constexpr bool isLongCastleMove() const
constexpr bool isCastleMove() const
constexpr bool isCapture() const
constexpr ppiece_t getPromotion() const
constexpr case_t to() const
constexpr bool isPromotion() const
constexpr bool isCheck() const
constexpr case_t from() const
constexpr bool isDrawScore() const
std::string getMoveEvalStr() const
bool isMateMove() const
Check if end of game flag is set, and not forced draw.
movenum_t generateMoves(bBasicBoard const &b)
generate moves if not yet generated
constexpr bmove_t getBMoveT(movenum_t const moveid) const
constexpr movenum_t getNumberOfMoves() const
PgnMove is for user-interface only.
std::string const & getMoveEvalStr() const
bPgnMove(bPgnMove const &pm) noexcept
static std::string getPieceStrUpper(piece_t const piece)
static class member function
std::vector< bMove > movelist_t
std::string to_string(int16_t value)
std::to_string not compatible on Mac OS (Apple LLVM version 5.0) provide generic utility function
std::ostream & operator<<(std::ostream &os, bPgnMoveList const &mpl)