片方の手番の持駒の枚数を記録するクラス. More...
#include <pieceStand.h>
Public Member Functions | |
PieceStand (unsigned int value=0) | |
PieceStand (Player, const state::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 40 of file pieceStand.h.
osl::PieceStand::PieceStand | ( | unsigned int | value = 0 | ) | [inline, explicit] |
Definition at line 51 of file pieceStand.h.
osl::PieceStand::PieceStand | ( | Player | , |
const state::SimpleState & | |||
) | [explicit] |
osl::PieceStand::PieceStand | ( | int | pawnCount, |
int | lanceCount, | ||
int | knightCount, | ||
int | silverCount, | ||
int | goldCount, | ||
int | bishopCount, | ||
int | rookCount, | ||
int | kingCount | ||
) | [inline] |
Definition at line 55 of file pieceStand.h.
References add(), osl::BISHOP, osl::GOLD, osl::KING, osl::KNIGHT, osl::LANCE, osl::PAWN, osl::ROOK, and osl::SILVER.
void osl::PieceStand::add | ( | Ptype | type, |
unsigned int | num = 1 |
||
) | [inline] |
Definition at line 71 of file pieceStand.h.
References flags, osl::isBasic(), mask, shift, and testCarries().
Referenced by osl::checkmate::ProofPiecesUtil::addMonopolizedPieces(), osl::game_playing::HistoryToTable::adjustDominance(), osl::ntesuki::NtesukiTable::allocateWithMove(), osl::checkmate::FixedDepthSearcher::attack(), osl::checkmate::FixedDepthSearcher2::attack(), osl::checkmate::Dfpn::attack(), osl::ntesuki::NtesukiRecord::calcProofPiecesAnd(), osl::ntesuki::NtesukiRecord::calcProofPiecesOr(), osl::hash::HashGenTable::HashGenTable(), PieceStand(), osl::checkmate::Dfpn::proofOracleAttack(), osl::PieceStandIO::readNumbers(), and osl::ntesuki::NtesukiRecord::setDisproofPieces().
void osl::PieceStand::addAtmostOnePiece | ( | PieceStand const & | ps | ) | [inline] |
pieceStand同士の加算,減算.
足して良いのは,carry が立っていないpiecestandで かつ,含まれる駒が高々1つ
Definition at line 111 of file pieceStand.h.
References atMostOneKind(), carryUnchangedAfterAdd(), flags, getFlags(), and testCarries().
Referenced by osl::hash::HashKey128::operator+=(), and osl::hash::GeneralHashKey< BoardKeyBase >::operator+=().
bool osl::PieceStand::any | ( | ) | const [inline] |
bool osl::PieceStand::atMostOneKind | ( | ) | const |
一種類の駒しかない
Definition at line 57 of file pieceStand.cc.
References osl::misc::BitOp::countBit().
Referenced by addAtmostOnePiece(), and subAtmostOnePiece().
bool osl::PieceStand::canAdd | ( | Ptype | type | ) | const |
Definition at line 43 of file pieceStand.cc.
References osl::PtypeTable::getIndexLimit(), osl::PtypeTable::getIndexMin(), osl::eval::max(), and osl::Ptype_Table.
Referenced by osl::game_playing::HistoryToTable::adjustDominance().
void osl::PieceStand::carriesOff | ( | ) | const [inline] |
Definition at line 138 of file pieceStand.h.
References carryMask, and flags.
Referenced by isSuperiorOrEqualTo().
void osl::PieceStand::carriesOn | ( | ) | const [inline] |
Definition at line 139 of file pieceStand.h.
References carryMask, and flags.
Referenced by isSuperiorOrEqualTo().
bool osl::PieceStand::carryUnchangedAfterAdd | ( | const PieceStand & | original, |
const PieceStand & | other | ||
) | const [private] |
Definition at line 64 of file pieceStand.cc.
References testCarries().
Referenced by addAtmostOnePiece().
bool osl::PieceStand::carryUnchangedAfterSub | ( | const PieceStand & | original, |
const PieceStand & | other | ||
) | const [private] |
Definition at line 73 of file pieceStand.cc.
References testCarries().
Referenced by subAtmostOnePiece().
unsigned int osl::PieceStand::get | ( | Ptype | type | ) | const [inline] |
Definition at line 134 of file pieceStand.h.
References flags, mask, and shift.
Referenced by osl::checkmate::ProofPiecesUtil::addMonopolizedPieces(), osl::game_playing::HistoryToTable::adjustDominance(), osl::checkmate::ProofPieces::attack(), osl::ntesuki::NtesukiRecord::calcProofPiecesAnd(), osl::checkmate::DisproofPieces::defense(), osl::operator<<(), osl::ntesuki::NtesukiRecord::setDisproofPieces(), osl::checkmate::Dfpn::ProofOracle::traceable(), and osl::PieceStandIO::writeNumbers().
unsigned int osl::PieceStand::getFlags | ( | ) | const [inline] |
Definition at line 168 of file pieceStand.h.
References flags.
Referenced by addAtmostOnePiece(), osl::hash::HashKey::dumpContents(), osl::hash::HashKey128::operator+=(), osl::hash::HashKey128::operator-=(), osl::operator<(), osl::operator==(), osl::hash::HashKey128::setPieceStand(), and subAtmostOnePiece().
bool osl::PieceStand::hasMoreThan | ( | PieceStand | other | ) | const [inline] |
this と other が BLACK の持駒と考えた時に, this の方が同じか沢山持っていれば真.
Definition at line 154 of file pieceStand.h.
References osl::BLACK, and isSuperiorOrEqualTo().
Referenced by osl::search::DominanceCheck::detect(), and osl::ntesuki::NtesukiRecord::isBetterFor().
bool osl::PieceStand::hasMoreThan | ( | Player | P, |
PieceStand | other | ||
) | const [inline] |
Definition at line 161 of file pieceStand.h.
References osl::BLACK.
bool osl::PieceStand::isSuperiorOrEqualTo | ( | PieceStand | other | ) | const [inline] |
Definition at line 141 of file pieceStand.h.
References carriesOff(), carriesOn(), carryMask, flags, and result.
Referenced by osl::checkmate::DfpnPathList::find(), osl::checkmate::DualDfpn::findProof(), osl::checkmate::DfpnTable::List::findProofOracle(), hasMoreThan(), osl::ntesuki::NtesukiRecord::isDominatedByDisproofPieces(), osl::ntesuki::NtesukiRecord::isDominatedByProofPieces(), osl::checkmate::DfpnTable::List::probe(), osl::checkmate::DfpnTable::List::showProofOracles(), osl::ntesuki::OracleProverLight::startFromAttack(), and osl::ntesuki::OracleProverLight::startFromDefense().
const PieceStand osl::PieceStand::max | ( | PieceStand | other | ) | const [inline] |
種類毎に this と other の持駒の多い方を取る
Definition at line 174 of file pieceStand.h.
References carryMask, flags, and PieceStand().
Referenced by osl::checkmate::DfpnTable::List::addDag(), osl::ntesuki::NtesukiRecord::calcProofPiecesAnd(), osl::checkmate::FixedDepthSearcher::defense(), osl::checkmate::FixedDepthSearcher2::defense(), osl::checkmate::Dfpn::Node::setCheckmateChildInDefense(), osl::ntesuki::NtesukiRecord::setDisproofPieces(), osl::checkmate::Dfpn::Node::setNoCheckmateChildInAttack(), and osl::checkmate::DfpnTable::List::store().
const PieceStand osl::PieceStand::max2 | ( | PieceStand | other | ) | const [inline] |
種類毎に this と other の持駒の多い方を取る (max のalternative)
Definition at line 190 of file pieceStand.h.
References carryMask, flags, and PieceStand().
const PieceStand osl::PieceStand::nextStand | ( | Player | pl, |
Move | move | ||
) | const [inline] |
Definition at line 206 of file pieceStand.h.
References Result::add(), osl::Move::capturePtype(), osl::Move::isDrop(), osl::Move::isNormal(), osl::Move::player(), osl::Move::ptype(), result, and osl::unpromote().
Referenced by osl::checkmate::Dfpn::analyze(), osl::checkmate::Dfpn::ProofOracle::newOracle(), nextStand(), osl::checkmate::Dfpn::Node::nextWhiteStand(), and osl::checkmate::ProofTreeDepthDfpn::orNode().
const PieceStand osl::PieceStand::nextStand | ( | Move | move | ) | const [inline] |
Definition at line 225 of file pieceStand.h.
References nextStand(), and osl::Move::player().
const PieceStand osl::PieceStand::previousStand | ( | Player | pl, |
Move | move | ||
) | const [inline] |
Definition at line 229 of file pieceStand.h.
References osl::Move::capturePtype(), osl::Move::isDrop(), osl::Move::isNormal(), osl::Move::player(), osl::Move::ptype(), result, and osl::unpromote().
Referenced by osl::checkmate::Dfpn::findDagSource(), previousStand(), and osl::checkmate::DualDfpn::writeRootHistory().
const PieceStand osl::PieceStand::previousStand | ( | Move | move | ) | const [inline] |
Definition at line 249 of file pieceStand.h.
References osl::Move::player(), and previousStand().
void osl::PieceStand::sub | ( | Ptype | type, |
unsigned int | num = 1 |
||
) | [inline] |
Definition at line 78 of file pieceStand.h.
References flags, osl::isBasic(), mask, and shift.
Referenced by osl::game_playing::HistoryToTable::adjustDominance(), osl::ntesuki::NtesukiTable::allocateWithMove(), and trySub().
void osl::PieceStand::subAtmostOnePiece | ( | PieceStand const & | ps | ) | [inline] |
Definition at line 121 of file pieceStand.h.
References atMostOneKind(), carryUnchangedAfterSub(), flags, getFlags(), and testCarries().
Referenced by osl::hash::HashKey128::operator-=(), and osl::hash::GeneralHashKey< BoardKeyBase >::operator-=().
unsigned int osl::PieceStand::testCarries | ( | ) | const [inline] |
Definition at line 140 of file pieceStand.h.
References carryMask, and flags.
Referenced by add(), addAtmostOnePiece(), carryUnchangedAfterAdd(), carryUnchangedAfterSub(), osl::operator<(), osl::operator==(), and subAtmostOnePiece().
void osl::PieceStand::tryAdd | ( | Ptype | type | ) |
void osl::PieceStand::trySub | ( | Ptype | type | ) | [inline] |
1枚以上持っていれば減らす
Definition at line 95 of file pieceStand.h.
References sub().
Referenced by osl::ntesuki::NtesukiRecord::calcProofPiecesOr(), and osl::ntesuki::NtesukiRecord::setDisproofPieces().
const unsigned int osl::PieceStand::carryMask = 0x48822224 [static] |
Definition at line 45 of file pieceStand.h.
Referenced by carriesOff(), carriesOn(), isSuperiorOrEqualTo(), max(), max2(), and testCarries().
unsigned int osl::PieceStand::flags [mutable, private] |
Definition at line 49 of file pieceStand.h.
Referenced by add(), addAtmostOnePiece(), any(), carriesOff(), carriesOn(), get(), getFlags(), isSuperiorOrEqualTo(), max(), max2(), sub(), subAtmostOnePiece(), and testCarries().
const CArray< unsigned char, PTYPE_MAX+1 > osl::PieceStand::mask [static, private] |
{{ 0,0,0,0,0,0,0,0, (1<<2)-1, (1<<3)-1, (1<<5)-1, (1<<3)-1, (1<<3)-1, (1<<3)-1, (1<<2)-1, (1<<2)-1 }}
Definition at line 48 of file pieceStand.h.
const CArray< Ptype, 7 > osl::PieceStand::order [static] |
持駒の表示で良く使われる順番.
KINGや成駒は -1
Definition at line 44 of file pieceStand.h.
Referenced by osl::checkmate::ProofPiecesUtil::addMonopolizedPieces(), osl::search::AlphaBeta2< EvalT >::alphaBetaSearchRoot(), osl::ntesuki::NtesukiRecord::calcProofPiecesAnd(), osl::eval::ml::PieceStand::eval(), osl::eval::ml::NonPawnPieceStandTurn::eval(), osl::search::AlphaBeta3::generateCapture(), osl::search::AlphaBeta3::generateCaptureAll(), osl::record::KisenPlusFile::getMoves(), osl::move_probability::SacrificeAttack::match(), osl::progress::ml::NewProgress::NewProgress(), osl::eval::ml::OpenMidEndingEval::OpenMidEndingEval(), osl::operator<<(), osl::record::KanjiPrint::print(), osl::search::AlphaBeta3::quiesce(), osl::search::AlphaBeta3::quiesceRoot(), osl::ntesuki::NtesukiRecord::setDisproofPieces(), osl::eval::ml::PieceStandY::setUp(), show(), osl::move_probability::MoveInfo::standIndex(), update(), and osl::progress::ml::NewProgress::updatePieceStand7().
const CArray< unsigned char, PTYPE_MAX+1 > osl::PieceStand::shift [static, private] |
{{ 0,0,0,0,0,0,0,0, 28, 24, 18, 14, 10, 6, 3, 0, }}
Definition at line 47 of file pieceStand.h.