Public Member Functions | Static Public Attributes | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
osl::PieceStand Class Reference

片方の手番の持駒の枚数を記録するクラス. 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)
 加算可能なら加える. More...
 
bool canAdd (Ptype type) const
 
void trySub (Ptype type)
 1枚以上持っていれば減らす More...
 
bool atMostOneKind () const
 一種類の駒しかない More...
 
void addAtmostOnePiece (PieceStand const &ps)
 pieceStand同士の加算,減算. More...
 
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 の方が同じか沢山持っていれば真. More...
 
bool hasMoreThan (Player P, PieceStand other) const
 
unsigned int getFlags () const
 
bool any () const
 どれかの駒を一枚でも持っている More...
 
const PieceStand max (PieceStand other) const
 種類毎に this と other の持駒の多い方を取る More...
 
const PieceStand max2 (PieceStand other) const
 種類毎に this と other の持駒の多い方を取る (max のalternative) More...
 
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
 持駒の表示で良く使われる順番. More...
 
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
 

Detailed Description

片方の手番の持駒の枚数を記録するクラス.

== を軽くするために carry off の状態を基本とする

Definition at line 37 of file bits/pieceStand.h.

Constructor & Destructor Documentation

§ PieceStand() [1/3]

osl::PieceStand::PieceStand ( unsigned int  value = 0)
inlineexplicit

Definition at line 48 of file bits/pieceStand.h.

Referenced by max(), max2(), and osl::PieceStandIO::readNumbers().

§ PieceStand() [2/3]

osl::PieceStand::PieceStand ( Player  pl,
const SimpleState state 
)
explicit

Definition at line 32 of file pieceStand.cc.

References add(), and osl::SimpleState::countPiecesOnStand().

§ PieceStand() [3/3]

osl::PieceStand::PieceStand ( int  pawnCount,
int  lanceCount,
int  knightCount,
int  silverCount,
int  goldCount,
int  bishopCount,
int  rookCount,
int  kingCount 
)
inline

Member Function Documentation

§ add()

void osl::PieceStand::add ( Ptype  type,
unsigned int  num = 1 
)
inline

§ addAtmostOnePiece()

void osl::PieceStand::addAtmostOnePiece ( PieceStand const &  ps)
inline

pieceStand同士の加算,減算.

足して良いのは,carry が立っていないpiecestandで かつ,含まれる駒が高々1つ

Definition at line 108 of file bits/pieceStand.h.

References atMostOneKind(), carryUnchangedAfterAdd(), getFlags(), and testCarries().

Referenced by osl::hash::HashKey128::operator+=().

§ any()

bool osl::PieceStand::any ( ) const
inline

どれかの駒を一枚でも持っている

Definition at line 167 of file bits/pieceStand.h.

References flags.

Referenced by osl::operator==().

§ atMostOneKind()

bool osl::PieceStand::atMostOneKind ( ) const

一種類の駒しかない

Definition at line 53 of file pieceStand.cc.

References carryUnchangedAfterAdd(), osl::misc::BitOp::countBit(), and getFlags().

Referenced by addAtmostOnePiece(), subAtmostOnePiece(), and trySub().

§ canAdd()

bool osl::PieceStand::canAdd ( Ptype  type) const

Definition at line 39 of file pieceStand.cc.

References osl::PtypeTable::getIndexLimit(), osl::PtypeTable::getIndexMin(), max(), and osl::Ptype_Table.

Referenced by sub(), and tryAdd().

§ carriesOff()

void osl::PieceStand::carriesOff ( ) const
inline

Definition at line 135 of file bits/pieceStand.h.

Referenced by isSuperiorOrEqualTo().

§ carriesOn()

void osl::PieceStand::carriesOn ( ) const
inline

Definition at line 136 of file bits/pieceStand.h.

References carryMask.

Referenced by isSuperiorOrEqualTo().

§ carryUnchangedAfterAdd()

bool osl::PieceStand::carryUnchangedAfterAdd ( const PieceStand original,
const PieceStand other 
) const
private

Definition at line 60 of file pieceStand.cc.

References carryUnchangedAfterSub(), and testCarries().

Referenced by addAtmostOnePiece(), atMostOneKind(), and subAtmostOnePiece().

§ carryUnchangedAfterSub()

bool osl::PieceStand::carryUnchangedAfterSub ( const PieceStand original,
const PieceStand other 
) const
private

Definition at line 69 of file pieceStand.cc.

References testCarries().

Referenced by carryUnchangedAfterAdd(), and subAtmostOnePiece().

§ get()

unsigned int osl::PieceStand::get ( Ptype  type) const
inline

§ getFlags()

unsigned int osl::PieceStand::getFlags ( ) const
inline

§ hasMoreThan() [1/2]

template<Player P>
bool osl::PieceStand::hasMoreThan ( PieceStand  other) const
inline

this と other が BLACK の持駒と考えた時に, this の方が同じか沢山持っていれば真.

Definition at line 151 of file bits/pieceStand.h.

References osl::BLACK, and isSuperiorOrEqualTo().

§ hasMoreThan() [2/2]

bool osl::PieceStand::hasMoreThan ( Player  P,
PieceStand  other 
) const
inline

Definition at line 158 of file bits/pieceStand.h.

References osl::BLACK.

§ isSuperiorOrEqualTo()

bool osl::PieceStand::isSuperiorOrEqualTo ( PieceStand  other) const
inline

§ max()

const PieceStand osl::PieceStand::max ( PieceStand  other) const
inline

種類毎に this と other の持駒の多い方を取る

Definition at line 171 of file bits/pieceStand.h.

References carryMask, flags, and PieceStand().

Referenced by osl::checkmate::DfpnTable::List::addDag(), canAdd(), osl::checkmate::DfpnTable::List::store(), and osl::checkmate::FixedDepthSolverExt::SetProofPieces::updateMax().

§ max2()

const PieceStand osl::PieceStand::max2 ( PieceStand  other) const
inline

種類毎に this と other の持駒の多い方を取る (max のalternative)

Definition at line 187 of file bits/pieceStand.h.

References carryMask, flags, and PieceStand().

§ nextStand() [1/2]

const PieceStand osl::PieceStand::nextStand ( Player  pl,
Move  move 
) const
inline

§ nextStand() [2/2]

const PieceStand osl::PieceStand::nextStand ( Move  move) const
inline

Definition at line 222 of file bits/pieceStand.h.

References nextStand(), and osl::Move::player().

§ previousStand() [1/2]

const PieceStand osl::PieceStand::previousStand ( Player  pl,
Move  move 
) const
inline

§ previousStand() [2/2]

const PieceStand osl::PieceStand::previousStand ( Move  move) const
inline

Definition at line 246 of file bits/pieceStand.h.

References osl::Move::player(), and previousStand().

§ sub()

void osl::PieceStand::sub ( Ptype  type,
unsigned int  num = 1 
)
inline

Definition at line 75 of file bits/pieceStand.h.

References canAdd(), osl::isBasic(), and tryAdd().

Referenced by trySub().

§ subAtmostOnePiece()

void osl::PieceStand::subAtmostOnePiece ( PieceStand const &  ps)
inline

§ testCarries()

unsigned int osl::PieceStand::testCarries ( ) const
inline

§ tryAdd()

void osl::PieceStand::tryAdd ( Ptype  type)

加算可能なら加える.

速度が必要なところでは使ってないので .cc に移動.

Definition at line 47 of file pieceStand.cc.

References add(), and canAdd().

Referenced by sub().

§ trySub()

void osl::PieceStand::trySub ( Ptype  type)
inline

1枚以上持っていれば減らす

Definition at line 92 of file bits/pieceStand.h.

References atMostOneKind(), and sub().

Member Data Documentation

§ carryMask

const unsigned int osl::PieceStand::carryMask = 0x48822224
static

Definition at line 42 of file bits/pieceStand.h.

Referenced by carriesOn(), isSuperiorOrEqualTo(), max(), and max2().

§ flags

unsigned int osl::PieceStand::flags
mutableprivate

Definition at line 46 of file bits/pieceStand.h.

Referenced by any(), getFlags(), isSuperiorOrEqualTo(), max(), and max2().

§ mask

const CArray< unsigned char, PTYPE_MAX+1 > osl::PieceStand::mask
staticprivate
Initial value:
=
{{
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 45 of file bits/pieceStand.h.

§ order

const CArray< Ptype, 7 > osl::PieceStand::order
static

§ shift

const CArray< unsigned char, PTYPE_MAX+1 > osl::PieceStand::shift
staticprivate
Initial value:
=
{{
0,0,0,0,0,0,0,0,
28, 24, 18, 14, 10, 6, 3, 0,
}}

Definition at line 44 of file bits/pieceStand.h.


The documentation for this class was generated from the following files: