Public メソッド | Static Public 変数 | Private メソッド | Private 変数 | Static Private 変数

クラス osl::PieceStand

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

#include <pieceStand.h>

osl::PieceStandのコラボレーション図
Collaboration graph
[凡例]

すべてのメンバ一覧

Public メソッド

 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 変数

static const CArray< Ptype, 7 > order
 持駒の表示で良く使われる順番.
static const unsigned int carryMask = 0x48822224

Private メソッド

bool carryUnchangedAfterAdd (const PieceStand &original, const PieceStand &other) const
bool carryUnchangedAfterSub (const PieceStand &original, const PieceStand &other) const

Private 変数

unsigned int flags

Static Private 変数

static const CArray< unsigned
char, PTYPE_MAX+1 > 
shift
static const CArray< unsigned
char, PTYPE_MAX+1 > 
mask

説明

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

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

bits/pieceStand.h37 行で定義されています。


コンストラクタとデストラクタ

osl::PieceStand::PieceStand ( unsigned int  value = 0  )  [inline, explicit]

bits/pieceStand.h48 行で定義されています。

参照元 max(), と max2().

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

pieceStand.cc32 行で定義されています。

参照先 add(), osl::SimpleState::countPiecesOnStand(), と order.

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

bits/pieceStand.h52 行で定義されています。

参照先 add(), osl::BISHOP, osl::GOLD, osl::KING, osl::KNIGHT, osl::LANCE, osl::PAWN, osl::ROOK, と osl::SILVER.


関数

void osl::PieceStand::add ( Ptype  type,
unsigned int  num = 1 
) [inline]
void osl::PieceStand::addAtmostOnePiece ( PieceStand const &  ps  )  [inline]

pieceStand同士の加算,減算.

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

bits/pieceStand.h108 行で定義されています。

参照先 atMostOneKind(), carryUnchangedAfterAdd(), flags, getFlags(), と testCarries().

参照元 osl::hash::HashKey128::operator+=().

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

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

bits/pieceStand.h167 行で定義されています。

参照先 flags.

bool osl::PieceStand::atMostOneKind (  )  const

一種類の駒しかない

pieceStand.cc53 行で定義されています。

参照先 osl::misc::BitOp::countBit(), と getFlags().

参照元 addAtmostOnePiece(), と subAtmostOnePiece().

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

pieceStand.cc39 行で定義されています。

参照先 osl::PtypeTable::getIndexLimit(), osl::PtypeTable::getIndexMin(), max(), と osl::Ptype_Table.

参照元 tryAdd().

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

bits/pieceStand.h135 行で定義されています。

参照先 carryMask, と flags.

参照元 isSuperiorOrEqualTo().

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

bits/pieceStand.h136 行で定義されています。

参照先 carryMask, と flags.

参照元 isSuperiorOrEqualTo().

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

pieceStand.cc60 行で定義されています。

参照先 testCarries().

参照元 addAtmostOnePiece().

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

pieceStand.cc69 行で定義されています。

参照先 testCarries().

参照元 subAtmostOnePiece().

unsigned int osl::PieceStand::get ( Ptype  type  )  const [inline]
unsigned int osl::PieceStand::getFlags (  )  const [inline]
bool osl::PieceStand::hasMoreThan ( Player  P,
PieceStand  other 
) const [inline]

bits/pieceStand.h158 行で定義されています。

参照先 osl::BLACK.

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

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

bits/pieceStand.h151 行で定義されています。

参照先 osl::BLACK, と isSuperiorOrEqualTo().

bool osl::PieceStand::isSuperiorOrEqualTo ( PieceStand  other  )  const [inline]
const PieceStand osl::PieceStand::max ( PieceStand  other  )  const [inline]
const PieceStand osl::PieceStand::max2 ( PieceStand  other  )  const [inline]

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

bits/pieceStand.h187 行で定義されています。

参照先 carryMask, flags, と PieceStand().

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

bits/pieceStand.h222 行で定義されています。

参照先 nextStand(), と osl::Move::player().

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

bits/pieceStand.h246 行で定義されています。

参照先 osl::Move::player(), と previousStand().

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

bits/pieceStand.h75 行で定義されています。

参照先 flags, osl::isBasic(), mask, と shift.

参照元 trySub().

void osl::PieceStand::subAtmostOnePiece ( PieceStand const &  ps  )  [inline]
unsigned int osl::PieceStand::testCarries (  )  const [inline]
void osl::PieceStand::tryAdd ( Ptype  type  ) 

加算可能なら加える.

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

pieceStand.cc47 行で定義されています。

参照先 add(), と canAdd().

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

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

bits/pieceStand.h92 行で定義されています。

参照先 sub().


変数

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

bits/pieceStand.h42 行で定義されています。

参照元 carriesOff(), carriesOn(), isSuperiorOrEqualTo(), max(), max2(), と testCarries().

unsigned int osl::PieceStand::flags [mutable, private]
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
  }}

bits/pieceStand.h45 行で定義されています。

参照元 add(), get(), と sub().

const CArray< Ptype, 7 > osl::PieceStand::order [static]
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,
  }}

bits/pieceStand.h44 行で定義されています。

参照元 add(), get(), と sub().


このクラスの説明は次のファイルから生成されました:
 全て クラス ネームスペース ファイル 関数 変数 型定義 列挙型 列挙型の値 フレンド マクロ定義