#include <ptypeTable.h>
Public メソッド | |
PtypeTable () | |
unsigned int | getShortMoveMask (Player p, PtypeO ptypeo, Direction dir) const |
mask_t | getMaskLow (Ptype ptype) const |
int | getIndex (Ptype ptype) const |
bool | hasLongMove (Ptype ptype) const |
遅くて良い? | |
bool | isBetterToPromote (Ptype ptype) const |
int | getCanDropLimit (Player player, Ptype ptype) const |
bool | canDropTo (Player pl, Ptype ptype, Position pos) const |
const char * | getName (Ptype ptype) const |
const char * | getCsaName (Ptype ptype) const |
int | getMoveMask (Ptype ptype) const |
int | getIndexMin (Ptype ptype) const |
int | getIndexLimit (Ptype ptype) const |
const EffectContent | getEffect (PtypeO ptypeo, Position from, Position to) const |
fromにいるptypeoがtoに利きを持つか? | |
const EffectContent & | getEffect (PtypeO ptypeo, Offset32 offset32) const |
const EffectContent | getEffectNotLongU (PtypeO ptypeo, Position from, Position to) const |
ptypeo が,自分から offset のところに効きを持つか? U除く | |
bool | hasUnblockableEffect (PtypeO attacker, Position from, Position to) const |
Static Public メソッド | |
static int | getKingIndex (Player p) |
Private メソッド | |
template<Ptype T> | |
void | initPtypeSub (Int2Type< false > isBasic) |
template<Ptype T> | |
void | initPtypeSub (Int2Type< true > isBasic) |
template<Ptype T> | |
void | initPtype () |
void | init () |
bool | canDropTo (Ptype ptype, Position pos, Int2Type< BLACK >) const |
bool | canDropTo (Ptype ptype, Position pos, Int2Type< WHITE >) const |
EffectContent & | effect (PtypeO ptypeo, Offset32 offset32) |
Private 変数 | |
CArray< mask_t, PTYPE_SIZE > | numMaskLows |
CArray< int, PTYPE_SIZE > | numIndices |
CArray< const char *, PTYPE_SIZE > | names |
CArray< const char *, PTYPE_SIZE > | csaNames |
CArray< bool, PTYPE_SIZE > | betterToPromote |
CArray< int, PTYPE_SIZE > | moveMasks |
CArray< int, PTYPE_SIZE > | indexMins |
CArray< int, PTYPE_SIZE > | indexLimits |
CArray2d< int, 2, PTYPE_SIZE > | canDropLimit |
CArray2d< EffectContent, PTYPEO_SIZE, Offset32::SIZE > | effectTable |
CArray2d< EffectContent, PTYPEO_SIZE, Offset32::SIZE > | effectTableNotLongU |
CArray2d< unsigned int, 2, SHORT_DIRECTION_SIZE > | shortMoveMask |
ptypeTable.h の 18 行で定義されています。
osl::PtypeTable::PtypeTable | ( | ) |
ptypeTable.cc の 6 行で定義されています。
参照先 osl::BLACK, osl::EffectContent::DIRECT(), effect(), getEffect(), init(), osl::newPtypeO(), osl::PPAWN, osl::ROOK, と osl::WHITE.
ptypeTable.h の 91 行で定義されています。
参照先 osl::BLACK, と canDropTo().
bool osl::PtypeTable::canDropTo | ( | Ptype | ptype, | |
Position | pos, | |||
Int2Type< WHITE > | ||||
) | const [inline, private] |
ptypeTable.h の 86 行で定義されています。
bool osl::PtypeTable::canDropTo | ( | Ptype | ptype, | |
Position | pos, | |||
Int2Type< BLACK > | ||||
) | const [inline, private] |
ptypeTable.h の 82 行で定義されています。
参照先 osl::BLACK, getCanDropLimit(), と osl::Position::y().
参照元 osl::search::QuiescenceGenerator< P >::breakThreatmate(), canDropTo(), osl::effect_action::SimpleMove< Action >::doAction(), osl::effect_action::BetterToPromote< Action >::doAction(), osl::effect_action::AlwaysMove< Action >::doAction(), osl::search::BreakThreatmate::generate(), osl::search::BreakThreatmate::generateBreakDrop(), と osl::move_generator::PieceOnBoard< Action, noCapturePromote >::generatePieceUnsafe().
EffectContent& osl::PtypeTable::effect | ( | PtypeO | ptypeo, | |
Offset32 | offset32 | |||
) | [inline, private] |
ptypeTable.h の 146 行で定義されています。
参照先 effectTable, osl::Offset32Base< Width, Width2 >::index(), osl::isValidPtypeO(), と osl::PTYPEO_MIN.
参照元 hasUnblockableEffect(), init(), と PtypeTable().
ptypeTable.h の 75 行で定義されています。
参照先 canDropLimit, osl::isPromoted(), osl::isValid(), と osl::playerToIndex().
参照元 canDropTo().
const char* osl::PtypeTable::getCsaName | ( | Ptype | ptype | ) | const [inline] |
ptypeTable.h の 103 行で定義されています。
参照先 csaNames.
参照元 osl::rating::DropPtype::name(), osl::rating::RelativeKingY::name(), osl::rating::RelativeKingX::name(), osl::rating::PinAttack::name(), osl::rating::PatternLong2::name(), osl::rating::PatternLong::name(), osl::rating::LongTarget2::name(), osl::rating::LongTarget::name(), osl::rating::Pattern::name(), osl::rating::DefenseKing8::name(), osl::rating::AttackKing8::name(), osl::rating::Chase::name(), show(), osl::record::csa::show(), と osl::record::csa::strToPtype().
const EffectContent& osl::PtypeTable::getEffect | ( | PtypeO | ptypeo, | |
Offset32 | offset32 | |||
) | const [inline] |
ptypeTable.h の 140 行で定義されています。
参照先 effectTable, osl::Offset32Base< Width, Width2 >::index(), osl::isValidPtypeO(), と osl::PTYPEO_MIN.
const EffectContent osl::PtypeTable::getEffect | ( | PtypeO | ptypeo, | |
Position | from, | |||
Position | to | |||
) | const [inline] |
fromにいるptypeoがtoに利きを持つか?
ptypeo | - 駒の種類 | |
from | - 駒の位置 | |
to | - 利きをチェックするマスの位置 |
ptypeTable.h の 135 行で定義されています。
参照先 osl::Position::isOnBoard().
参照元 osl::checkmate::Dfpn::attack(), osl::move_generator::addeffect8::canAddLongEffect(), osl::checkmate::FixedDepthSearcher2::defenseEstimation(), osl::checkmate::FixedDepthSearcher::defenseEstimation(), osl::search::QuiescenceSearch2< EvalT >::examineTakeBack2(), osl::effect_util::AdditionalEffect::find(), osl::eval::See::findAdditionalPieces(), osl::effect_util::Pin::findPtype(), osl::checkmate::Dfpn::generateCheck(), osl::move_generator::addeffect8::generateLongDropWithOffset(), osl::move_generator::without_effect::generateLongMove(), osl::move_generator::addeffect8::hasEffect(), osl::state::NumEffectState::hasEffectFromTo(), osl::effect::hasLongMove(), osl::move_generator::addeffect8::hasShortEffect(), osl::effect::hasShortMove(), hasUnblockableEffect(), osl::move_generator::addeffect8::hasUnblockableEffect(), osl::checkmate::ImmediateCheckmateTable::ImmediateCheckmateTable(), init(), osl::state::SimpleState::isAlmostValidMove(), osl::effect_util::UnblockableCheck::isMember(), osl::move_classifier::KingOpenMove< P >::isMemberMain(), osl::effect::Liberty8Table::Liberty8Table(), PtypeTable(), osl::effect::setBetweenMask(), osl::effect_util::SendOffPosition::Table::Table(), osl::search::StateElements::validCaptureMove(), と osl::search::StateElements::validSimpleMove().
const EffectContent osl::PtypeTable::getEffectNotLongU | ( | PtypeO | ptypeo, | |
Position | from, | |||
Position | to | |||
) | const [inline] |
ptypeo が,自分から offset のところに効きを持つか? U除く
ptypeTable.h の 156 行で定義されています。
参照先 effectTableNotLongU, osl::Position::isOnBoard(), osl::isValidPtypeO(), と osl::PTYPEO_MIN.
int osl::PtypeTable::getIndex | ( | Ptype | ptype | ) | const [inline] |
ptypeTable.h の 59 行で定義されています。
参照先 numIndices.
参照元 osl::state::SimpleState::countPiecesOnStandBit(), osl::rating::EscapePinGroup::findMatch(), osl::rating::EscapePin::match(), osl::annotate::ThreatmateIfMorePieces::match(), osl::apply_move::ApplyDoUndoDropMove< P, state::SimpleState >::prologue(), と osl::record::ki2::show().
int osl::PtypeTable::getIndexLimit | ( | Ptype | ptype | ) | const [inline] |
ptypeTable.h の 116 行で定義されています。
参照先 indexLimits, と osl::isBasic().
参照元 osl::PieceStand::canAdd(), osl::search::AlphaBeta3::generateCapture(), osl::search::AlphaBeta3::generateCaptureAll(), osl::search::BigramKillerMove::getMove(), osl::search::AlphaBeta3::quiesce(), osl::search::AlphaBeta3::quiesceRoot(), osl::eval::ml::PieceStandY::setUp(), osl::eval::ml::PtypeCountXYAttack::setUp(), osl::eval::ml::PtypeCountXY::setUp(), と show().
int osl::PtypeTable::getIndexMin | ( | Ptype | ptype | ) | const [inline] |
ptypeTable.h の 111 行で定義されています。
参照先 indexMins, と osl::isBasic().
参照元 osl::PieceStand::canAdd(), osl::eval::ml::PieceStand::evalWithUpdate(), osl::search::AlphaBeta3::generateCapture(), osl::search::AlphaBeta3::generateCaptureAll(), osl::search::BigramKillerMove::getMove(), hasLongMove(), osl::eval::ml::PieceStandY::index(), osl::eval::ml::NonPawnPieceStandTurn::index(), osl::eval::ml::PtypeCount::indexBoardCount(), osl::eval::ml::PtypeCount::indexBoardCountX(), osl::eval::ml::PtypeCount::indexBoardCountY(), osl::eval::ml::PtypeCount::indexCount(), osl::eval::ml::PtypeCount::indexCountX(), osl::eval::ml::PtypeCount::indexCountY(), osl::record::MiniBoardChar50::MiniBoardChar50(), osl::progress::ml::NewProgress::NewProgress(), osl::search::AlphaBeta3::quiesce(), osl::search::AlphaBeta3::quiesceRoot(), osl::eval::ml::PieceStandY::setUp(), osl::eval::ml::PtypeCountXYAttack::setUp(), osl::eval::ml::PtypeCountXY::setUp(), show(), と osl::progress::ml::NewProgress::updateMain().
static int osl::PtypeTable::getKingIndex | ( | Player | p | ) | [inline, static] |
ptypeTable.h の 121 行で定義されています。
参照先 osl::BLACK, と osl::isValid().
mask_t osl::PtypeTable::getMaskLow | ( | Ptype | ptype | ) | const [inline] |
ptypeTable.h の 49 行で定義されています。
参照先 numMaskLows.
参照元 osl::state::SimpleState::countPiecesOnStandBit(), osl::rating::EscapePinGroup::findMatch(), osl::state::NumEffectState::findThreatenedPiece(), osl::rating::EscapePin::match(), osl::annotate::ThreatmateIfMorePieces::match(), と osl::apply_move::ApplyDoUndoDropMove< P, state::SimpleState >::prologue().
int osl::PtypeTable::getMoveMask | ( | Ptype | ptype | ) | const [inline] |
ptypeTable.h の 107 行で定義されています。
参照先 moveMasks.
参照元 osl::search::QuiescenceGenerator< P >::attackKing8(), osl::effect::EffectedNumTable::EffectedNumTable(), osl::effect_util::UnblockableEffect::find(), osl::effect_util::VirtualPin::findDirection(), osl::effect_util::Pin::findDirection(), osl::eval::TakeBackValue::findEffectPiecesAfterMove(), osl::effect_util::EffectUtil::forEachEffectOfPtypeO(), osl::checkmate::ImmediateCheckmateTable::ImmediateCheckmateTable(), osl::effect_util::Neighboring8Effect::Table::init(), osl::effect_util::Neighboring8Direct::Table::init(), osl::effect::AddMaskAction< Liberty, P, T >::operator()(), と osl::checkmate::ProofNumberTable::ProofNumberTable().
const char* osl::PtypeTable::getName | ( | Ptype | ptype | ) | const [inline] |
unsigned int osl::PtypeTable::getShortMoveMask | ( | Player | p, | |
PtypeO | ptypeo, | |||
Direction | dir | |||
) | const [inline] |
ptypeTable.h の 44 行で定義されています。
bool osl::PtypeTable::hasLongMove | ( | Ptype | ptype | ) | const [inline] |
遅くて良い?
ptypeTable.h の 67 行で定義されています。
参照先 getIndexMin(), と osl::unpromote().
参照元 osl::checkmate::OracleAdjust::attack(), osl::effect_util::Neighboring8Direct::Table::findNearest(), osl::effect::Liberty8Table::getLongEffect(), osl::search::BigramKillerMove::getMove(), osl::effect_util::Neighboring8Effect::Table::hasEffect(), osl::effect_util::Neighboring8Direct::Table::hasEffect(), osl::effect_util::Neighboring8Effect::hasEffectNaive(), osl::effect_util::Neighboring8Direct::hasEffectNaive(), osl::effect_util::Neighboring25Direct::hasEffectNaive(), osl::effect_util::Neighboring8Direct::Table::hasEffectOrAdditional(), osl::rating::ImmediateAddSupport::index(), osl::move_generator::addeffect8::AddEffect8Table::initDropPosition(), osl::move_generator::addeffect8::AddEffect8Table::initLongDropPosition(), osl::effect::Liberty8Table::Liberty8Table(), と osl::effect::Liberty8Table::longEffectOf().
bool osl::PtypeTable::hasUnblockableEffect | ( | PtypeO | attacker, | |
Position | from, | |||
Position | to | |||
) | const [inline] |
ptypeTable.h の 163 行で定義されています。
参照先 effect(), getEffect(), と osl::EffectContent::hasUnblockableEffect().
参照元 osl::search::QuiescenceSearch2< EvalT >::examineMoves().
void osl::PtypeTable::init | ( | ) | [private] |
ptypeTable.cc の 53 行で定義されています。
参照先 osl::BLACK, osl::Board_Table, osl::BOOST_STATIC_ASSERT(), osl::EffectContent::DIRECT(), osl::DIRECTION_MAX, osl::DIRECTION_MIN, effect(), effectTable, effectTableNotLongU, osl::BoardTable::getDxForBlack(), osl::BoardTable::getDyForBlack(), getEffect(), osl::move_generator::addeffect8::hasEffect(), osl::Offset32Base< Width, Width2 >::index(), osl::isLong(), osl::LONG_U, moveMasks, osl::newOffset(), osl::newPtypeO(), numIndices, numMaskLows, osl::PTYPE_MAX, osl::PTYPE_MIN, osl::PTYPEO_MIN, osl::ROOK, shortMoveMask, と osl::WHITE.
参照元 PtypeTable().
void osl::PtypeTable::initPtype | ( | ) | [inline, private] |
ptypeTable.cc の 48 行で定義されています。
参照先 osl::isBasic().
void osl::PtypeTable::initPtypeSub | ( | Int2Type< true > | isBasic | ) | [inline, private] |
黒
白
ptypeTable.cc の 21 行で定義されています。
参照先 canDropLimit, osl::canPromote(), indexLimits, indexMins, numIndices, numMaskLows, osl::promote(), と osl::Position::reverseY().
void osl::PtypeTable::initPtypeSub | ( | Int2Type< false > | isBasic | ) | [inline, private] |
ptypeTable.cc の 39 行で定義されています。
参照先 betterToPromote, csaNames, moveMasks, と names.
bool osl::PtypeTable::isBetterToPromote | ( | Ptype | ptype | ) | const [inline] |
CArray<bool, PTYPE_SIZE> osl::PtypeTable::betterToPromote [private] |
ptypeTable.h の 25 行で定義されています。
参照元 initPtypeSub(), と isBetterToPromote().
CArray2d<int, 2, PTYPE_SIZE> osl::PtypeTable::canDropLimit [private] |
ptypeTable.h の 30 行で定義されています。
参照元 getCanDropLimit(), と initPtypeSub().
CArray<const char *, PTYPE_SIZE> osl::PtypeTable::csaNames [private] |
ptypeTable.h の 24 行で定義されています。
参照元 getCsaName(), と initPtypeSub().
CArray2d<EffectContent,PTYPEO_SIZE,Offset32::SIZE> osl::PtypeTable::effectTable [private] |
ptypeTable.h の 32 行で定義されています。
参照元 effect(), getEffect(), と init().
CArray2d<EffectContent,PTYPEO_SIZE,Offset32::SIZE> osl::PtypeTable::effectTableNotLongU [private] |
ptypeTable.h の 33 行で定義されています。
参照元 getEffectNotLongU(), と init().
CArray<int, PTYPE_SIZE> osl::PtypeTable::indexLimits [private] |
ptypeTable.h の 28 行で定義されています。
参照元 getIndexLimit(), と initPtypeSub().
CArray<int, PTYPE_SIZE> osl::PtypeTable::indexMins [private] |
ptypeTable.h の 27 行で定義されています。
参照元 getIndexMin(), と initPtypeSub().
CArray<int, PTYPE_SIZE> osl::PtypeTable::moveMasks [private] |
ptypeTable.h の 26 行で定義されています。
参照元 getMoveMask(), init(), と initPtypeSub().
CArray<const char *, PTYPE_SIZE> osl::PtypeTable::names [private] |
ptypeTable.h の 23 行で定義されています。
参照元 getName(), と initPtypeSub().
CArray<int, PTYPE_SIZE> osl::PtypeTable::numIndices [private] |
ptypeTable.h の 22 行で定義されています。
参照元 getIndex(), init(), と initPtypeSub().
CArray<mask_t, PTYPE_SIZE> osl::PtypeTable::numMaskLows [private] |
ptypeTable.h の 21 行で定義されています。
参照元 getMaskLow(), init(), と initPtypeSub().
CArray2d<unsigned int, 2, SHORT_DIRECTION_SIZE> osl::PtypeTable::shortMoveMask [private] |
ptypeTable.h の 34 行で定義されています。
参照元 getShortMoveMask(), と init().