My Project
|
片方の手番の持駒の枚数を記録するクラス. More...
#include <pieceStand.h>
Public Member Functions | |
PieceStand (unsigned int value=0) | |
PieceStand (Player, const SimpleState &) | |
PieceStand (int pawnCount, int lanceCount, int knightCount, int silverCount, int goldCount, int bishopCount, int rookCount, int kingCount) | |
void | add (Ptype type, unsigned int num=1) |
void | sub (Ptype type, unsigned int num=1) |
void | tryAdd (Ptype type) |
加算可能なら加える. | |
bool | canAdd (Ptype type) const |
void | trySub (Ptype type) |
1枚以上持っていれば減らす | |
bool | atMostOneKind () const |
一種類の駒しかない | |
void | addAtmostOnePiece (PieceStand const &ps) |
pieceStand同士の加算,減算. | |
void | subAtmostOnePiece (PieceStand const &ps) |
unsigned int | get (Ptype type) const |
void | carriesOff () const |
void | carriesOn () const |
unsigned int | testCarries () const |
bool | isSuperiorOrEqualTo (PieceStand other) const |
template<Player P> | |
bool | hasMoreThan (PieceStand other) const |
this と other が BLACK の持駒と考えた時に, this の方が同じか沢山持っていれば真. | |
bool | hasMoreThan (Player P, PieceStand other) const |
unsigned int | getFlags () const |
bool | any () const |
どれかの駒を一枚でも持っている | |
const PieceStand | max (PieceStand other) const |
種類毎に this と other の持駒の多い方を取る | |
const PieceStand | max2 (PieceStand other) const |
種類毎に this と other の持駒の多い方を取る (max のalternative) | |
const PieceStand | nextStand (Player pl, Move move) const |
const PieceStand | nextStand (Move move) const |
const PieceStand | previousStand (Player pl, Move move) const |
const PieceStand | previousStand (Move move) const |
Static Public Attributes | |
static const CArray< Ptype, 7 > | order |
持駒の表示で良く使われる順番. | |
static const unsigned int | carryMask = 0x48822224 |
Private Member Functions | |
bool | carryUnchangedAfterAdd (const PieceStand &original, const PieceStand &other) const |
bool | carryUnchangedAfterSub (const PieceStand &original, const PieceStand &other) const |
Private Attributes | |
unsigned int | flags |
Static Private Attributes | |
static const CArray< unsigned char, PTYPE_MAX+1 > | shift |
static const CArray< unsigned char, PTYPE_MAX+1 > | mask |
片方の手番の持駒の枚数を記録するクラス.
== を軽くするために carry off の状態を基本とする
Definition at line 37 of file bits/pieceStand.h.
|
inlineexplicit |
Definition at line 48 of file bits/pieceStand.h.
|
explicit |
Definition at line 31 of file pieceStand.cc.
References add(), osl::SimpleState::countPiecesOnStand(), and order.
|
inline |
Definition at line 52 of file bits/pieceStand.h.
References add(), osl::BISHOP, osl::GOLD, osl::KING, osl::KNIGHT, osl::LANCE, osl::PAWN, osl::ROOK, and osl::SILVER.
|
inline |
Definition at line 68 of file bits/pieceStand.h.
References flags, osl::isBasic(), mask, shift, and testCarries().
Referenced by osl::checkmate::ProofPiecesUtil::addMonopolizedPieces(), osl::checkmate::Dfpn::attack(), osl::checkmate::ProofPieces::attack(), osl::checkmate::DisproofPieces::defense(), nextStand(), PieceStand(), PieceStand(), previousStand(), osl::checkmate::Dfpn::proofOracleAttack(), osl::PieceStandIO::readNumbers(), and osl::checkmate::FixedDepthSolverExt::SetProofPieces::setAttackLeaf().
|
inline |
pieceStand同士の加算,減算.
足して良いのは,carry が立っていないpiecestandで かつ,含まれる駒が高々1つ
Definition at line 108 of file bits/pieceStand.h.
References atMostOneKind(), carryUnchangedAfterAdd(), flags, getFlags(), and testCarries().
Referenced by osl::hash::HashKey128::operator+=().
|
inline |
bool osl::PieceStand::atMostOneKind | ( | ) | const |
一種類の駒しかない
Definition at line 53 of file pieceStand.cc.
References osl::misc::BitOp::countBit().
Referenced by addAtmostOnePiece(), and subAtmostOnePiece().
bool osl::PieceStand::canAdd | ( | Ptype | type | ) | const |
Definition at line 39 of file pieceStand.cc.
References osl::PtypeTable::getIndexLimit(), osl::PtypeTable::getIndexMin(), and osl::Ptype_Table.
|
inline |
Definition at line 135 of file bits/pieceStand.h.
References flags.
Referenced by isSuperiorOrEqualTo().
|
inline |
Definition at line 136 of file bits/pieceStand.h.
References carryMask, and flags.
Referenced by isSuperiorOrEqualTo().
|
private |
Definition at line 59 of file pieceStand.cc.
References testCarries().
Referenced by addAtmostOnePiece().
|
private |
Definition at line 68 of file pieceStand.cc.
References testCarries().
Referenced by subAtmostOnePiece().
|
inline |
Definition at line 131 of file bits/pieceStand.h.
References flags, mask, and shift.
Referenced by osl::checkmate::ProofPiecesUtil::addMonopolizedPieces(), osl::checkmate::ProofPieces::attack(), osl::checkmate::DisproofPieces::defense(), nextStand(), osl::operator<<(), previousStand(), sub(), osl::hash::HashKey128::StandHash::toUint64(), osl::checkmate::Dfpn::ProofOracle::traceable(), trySub(), and osl::PieceStandIO::writeNumbers().
|
inline |
Definition at line 165 of file bits/pieceStand.h.
References flags.
Referenced by addAtmostOnePiece(), osl::hash::HashKey128::operator+=(), osl::hash::HashKey128::operator-=(), osl::operator<(), osl::operator==(), osl::hash::HashKey128::setPieceStand(), and subAtmostOnePiece().
|
inline |
this と other が BLACK の持駒と考えた時に, this の方が同じか沢山持っていれば真.
Definition at line 151 of file bits/pieceStand.h.
References osl::BLACK, and isSuperiorOrEqualTo().
|
inline |
Definition at line 158 of file bits/pieceStand.h.
References osl::BLACK.
|
inline |
Definition at line 138 of file bits/pieceStand.h.
References carriesOff(), carriesOn(), carryMask, and flags.
Referenced by osl::checkmate::ProofTreeDepthDfpn::Table::expectMoreDepth(), osl::checkmate::DfpnPathList::find(), osl::checkmate::DualDfpn::findProof(), osl::checkmate::DfpnTable::List::findProofOracle(), hasMoreThan(), osl::checkmate::DfpnTable::List::probe(), and osl::checkmate::DfpnTable::List::showProofOracles().
|
inline |
種類毎に this と other の持駒の多い方を取る
Definition at line 171 of file bits/pieceStand.h.
References carryMask, and flags.
Referenced by osl::checkmate::DfpnTable::List::addDag(), osl::checkmate::Dfpn::Node::setCheckmateChildInDefense(), osl::checkmate::Dfpn::Node::setNoCheckmateChildInAttack(), osl::checkmate::DfpnTable::List::store(), and osl::checkmate::FixedDepthSolverExt::SetProofPieces::updateMax().
|
inline |
種類毎に this と other の持駒の多い方を取る (max のalternative)
Definition at line 187 of file bits/pieceStand.h.
|
inline |
Definition at line 222 of file bits/pieceStand.h.
References nextStand(), and osl::Move::player().
|
inline |
Definition at line 203 of file bits/pieceStand.h.
References add(), osl::Move::capturePtype(), get(), osl::Move::isDrop(), osl::Move::isNormal(), osl::Move::player(), osl::Move::ptype(), sub(), and osl::unpromote().
Referenced by osl::checkmate::Dfpn::ProofOracle::newOracle(), nextStand(), osl::checkmate::Dfpn::Node::nextWhiteStand(), and osl::checkmate::ProofTreeDepthDfpn::orNode().
|
inline |
Definition at line 246 of file bits/pieceStand.h.
References osl::Move::player(), and previousStand().
|
inline |
Definition at line 226 of file bits/pieceStand.h.
References add(), osl::Move::capturePtype(), get(), osl::Move::isDrop(), osl::Move::isNormal(), osl::Move::player(), osl::Move::ptype(), sub(), and osl::unpromote().
Referenced by osl::checkmate::Dfpn::findDagSource(), previousStand(), and osl::checkmate::DualDfpn::writeRootHistory().
|
inline |
Definition at line 75 of file bits/pieceStand.h.
References flags, get(), osl::isBasic(), mask, and shift.
Referenced by nextStand(), previousStand(), and trySub().
|
inline |
Definition at line 118 of file bits/pieceStand.h.
References atMostOneKind(), carryUnchangedAfterSub(), flags, getFlags(), and testCarries().
Referenced by osl::hash::HashKey128::operator-=().
|
inline |
Definition at line 137 of file bits/pieceStand.h.
References carryMask, and flags.
Referenced by add(), addAtmostOnePiece(), carryUnchangedAfterAdd(), carryUnchangedAfterSub(), osl::operator<(), osl::operator==(), and subAtmostOnePiece().
void osl::PieceStand::tryAdd | ( | Ptype | type | ) |
|
inline |
1枚以上持っていれば減らす
Definition at line 92 of file bits/pieceStand.h.
Referenced by osl::checkmate::ProofPieces::attack(), and osl::checkmate::DisproofPieces::defense().
|
static |
Definition at line 42 of file bits/pieceStand.h.
Referenced by carriesOn(), isSuperiorOrEqualTo(), max(), max2(), and testCarries().
|
mutableprivate |
Definition at line 46 of file bits/pieceStand.h.
Referenced by add(), addAtmostOnePiece(), any(), carriesOff(), carriesOn(), get(), getFlags(), isSuperiorOrEqualTo(), max(), max2(), sub(), subAtmostOnePiece(), and testCarries().
Definition at line 45 of file bits/pieceStand.h.
持駒の表示で良く使われる順番.
KINGや成駒は -1
Definition at line 41 of file bits/pieceStand.h.
Referenced by osl::checkmate::ProofPiecesUtil::addMonopolizedPieces(), osl::eval::ml::PieceStand::eval(), osl::eval::ml::NonPawnPieceStandTurn::eval(), osl::SimpleState::initPawnMask(), osl::SimpleState::isConsistent(), osl::record::KisenPlusFile::load(), osl::move_probability::SacrificeAttack::match(), osl::progress::ml::NewProgress::NewProgress(), osl::eval::ml::OpenMidEndingEval::OpenMidEndingEval(), osl::operator<<(), PieceStand(), osl::record::KanjiPrint::print(), osl::PieceStandIO::readNumbers(), osl::record::KisenWriter::save(), osl::eval::ml::PieceStandY::setUp(), osl::move_probability::MoveInfo::standIndex(), osl::progress::ml::NewProgress::updatePieceStand7(), and osl::PieceStandIO::writeNumbers().
Definition at line 44 of file bits/pieceStand.h.