My Project
osl::effect::NumSimpleEffectTable Class Reference

局面全体の利きデータ. More...

#include <numSimpleEffect.h>

Public Member Functions

template<Player P, Ptype T, Direction Dir, NumBitmapEffect::Op OP, bool UC>
void doEffectShort (const SimpleState &state, Square pos, int num)
 ある位置からある方向に短い利きがある時に,その方向の利きを更新する.
template<Player P, Ptype T, Direction Dir, NumBitmapEffect::Op OP, bool UC>
void doEffectLong (const SimpleState &state, Square pos, int num)
 ある位置からある方向に長い利きがある時に,その方向の利きを更新する.
template<Player P, Ptype T, NumBitmapEffect::Op OP, bool UC>
void doEffectBy (const SimpleState &state, Square pos, int num)
 ある種類の駒が持つ利きを更新する.
template<NumBitmapEffect::Op OP, bool UC>
void doEffect (const SimpleState &state, PtypeO ptypeo, Square pos, int num)
 ある種類の駒が持つ利きを更新する.
template<NumBitmapEffect::Op OP, bool UC>
void doEffect (const SimpleState &state, Piece p)
 ある駒が持つ利きを更新する.
void init (const SimpleState &state)
 盤面のデータを元に初期化する.
 NumSimpleEffectTable (const SimpleState &state)
 コンストラクタ.
const NumBitmapEffect effectSetAt (Square pos) const
 ある位置の利きデータを取り出す.
template<NumBitmapEffect::Op OP, bool UC>
void doBlockAt (const SimpleState &state, Square pos, int piece_num)
 posに駒を設置/削除して長い利きをブロック/延長する際の利きデータの更新.
const BoardMask changedEffects (Player pl) const
const NumBitmapEffect changedPieces () const
const PieceMask effectedMask (Player pl) const
const PieceMask effectedChanged (Player pl) const
void setChangedPieces (NumBitmapEffect const &effect)
void clearChangedEffects ()
void invalidateChangedEffects ()
void clearEffectedChanged ()
void copyFrom (const NumSimpleEffectTable &src)
 主要部分を高速にコピーする.

Public Attributes

CArray< PieceMask, 2 > effected_mask
CArray< PieceMask, 2 > effected_changed_mask
mobility::MobilityTable mobilityTable
 mobility
EffectedNumTable effectedNumTable
 effected num

Protected Attributes

CArray< NumBitmapEffect, Square::SIZEeffects
CArray< BoardMask, 2 > changed_effects
NumBitmapEffect changed_effect_pieces
 set of pieces whose effect changed by previous move

Friends

bool operator== (const NumSimpleEffectTable &et1, const NumSimpleEffectTable &et2)

Detailed Description

局面全体の利きデータ.

Definition at line 26 of file numSimpleEffect.h.

Constructor & Destructor Documentation

◆ NumSimpleEffectTable()

osl::effect::NumSimpleEffectTable::NumSimpleEffectTable ( const SimpleState & state)
inline

コンストラクタ.

Definition at line 210 of file numSimpleEffect.h.

References init().

Referenced by copyFrom(), and operator==.

Member Function Documentation

◆ changedEffects()

const BoardMask osl::effect::NumSimpleEffectTable::changedEffects ( Player pl) const
inline

Definition at line 235 of file numSimpleEffect.h.

References changed_effects.

◆ changedPieces()

const NumBitmapEffect osl::effect::NumSimpleEffectTable::changedPieces ( ) const
inline

Definition at line 238 of file numSimpleEffect.h.

References changed_effect_pieces.

◆ clearChangedEffects()

void osl::effect::NumSimpleEffectTable::clearChangedEffects ( )
inline

Definition at line 250 of file numSimpleEffect.h.

References changed_effect_pieces, and changed_effects.

◆ clearEffectedChanged()

void osl::effect::NumSimpleEffectTable::clearEffectedChanged ( )
inline

Definition at line 260 of file numSimpleEffect.h.

References effected_changed_mask.

◆ copyFrom()

void osl::effect::NumSimpleEffectTable::copyFrom ( const NumSimpleEffectTable & src)

主要部分を高速にコピーする.

盤の外や直前の利きの変化などの情報はコピーされない

Definition at line 22 of file numSimpleEffect.cc.

References changed_effect_pieces, changed_effects, effected_changed_mask, effected_mask, effectedNumTable, effects, osl::Square::index(), mobilityTable, and NumSimpleEffectTable().

◆ doBlockAt()

template<osl::effect::NumBitmapEffect::Op OP, bool UC>
void osl::effect::NumSimpleEffectTable::doBlockAt ( const SimpleState & state,
Square pos,
int piece_num )

posに駒を設置/削除して長い利きをブロック/延長する際の利きデータの更新.

Parameters
OP(template)- 利きを足すか,減らすか
state- 局面の状態 posに駒を置く前でも後でもよい
pos- 変化する位置

xorなのでposに元々駒があって,取り除く時にも呼び出せる.

Parameters
state- 局面の状態 posに駒を置く前でも後でもよい
pos- 変化する位置

Definition at line 285 of file numSimpleEffect.h.

References osl::misc::GeneralMask< Integer >::any(), osl::BLACK, osl::Board_Table, changed_effects, effected_changed_mask, effected_mask, effectedNumTable, effects, osl::EMPTY_NUM, osl::BoardMask::index(), osl::Square::index(), osl::Piece::isEdgeNum(), osl::Piece::isEmptyNum(), osl::NumBitmapEffect::longEffectMask(), osl::NumBitmapEffect::makeLongEffect(), mobilityTable, osl::Piece::number(), osl::Piece::owner(), osl::SimpleState::pieceAt(), osl::SimpleState::pieceOf(), osl::NumBitmapEffect::playerEffectMask(), osl::PPAWN, osl::Piece::ptype(), setChangedPieces(), osl::Piece::square(), osl::NumBitmapEffect::Sub, and osl::misc::GeneralMask< Integer >::takeOneBit().

◆ doEffect() [1/2]

template<NumBitmapEffect::Op OP, bool UC>
void osl::effect::NumSimpleEffectTable::doEffect ( const SimpleState & state,
Piece p )
inline

ある駒が持つ利きを更新する.

Parameters
OP(template)- 利きを足すか,減らすか
state- 盤面(動かした後)
p- 駒

Definition at line 198 of file numSimpleEffect.h.

References doEffect(), osl::Piece::number(), osl::Piece::ptypeO(), and osl::Piece::square().

◆ doEffect() [2/2]

template<NumBitmapEffect::Op OP, bool UC>
void osl::effect::NumSimpleEffectTable::doEffect ( const SimpleState & state,
PtypeO ptypeo,
Square pos,
int num )

ある種類の駒が持つ利きを更新する.

Parameters
OP(template)- 利きを足すか,減らすか
state- 盤面(動かした後)
ptypeo- 駒の種類
pos- 駒の位置
num- 駒番号

Referenced by doEffect(), and init().

◆ doEffectBy()

template<Player P, Ptype T, NumBitmapEffect::Op OP, bool UC>
void osl::effect::NumSimpleEffectTable::doEffectBy ( const SimpleState & state,
Square pos,
int num )

ある種類の駒が持つ利きを更新する.

Parameters
P(template)- ある位置にある駒の所有者
T(template)- ある位置にある駒の種類
OP(template)- 利きを足すか,減らすか
state- 盤面(動かした後)
pos- 駒の位置
num- 駒番号

◆ doEffectLong()

template<Player P, Ptype T, Direction Dir, NumBitmapEffect::Op OP, bool UC>
void osl::effect::NumSimpleEffectTable::doEffectLong ( const SimpleState & state,
Square pos,
int num )
inline

ある位置からある方向に長い利きがある時に,その方向の利きを更新する.

Parameters
P(template)- ある位置にある駒の所有者
T(template)- ある位置にある駒の種類
Dir(template)- 黒の立場から見た方向
OP(template)- 利きを足すか,減らすか
state- 盤面(動かした後)
pos- 駒の位置
num- 駒番号

Definition at line 89 of file numSimpleEffect.h.

References changed_effects, osl::D, osl::DL, osl::DR, effected_changed_mask, effected_mask, effectedNumTable, effects, osl::EMPTY_NUM, osl::BoardMask::getIndexOffset(), osl::BoardMask::index(), osl::Square::index(), osl::Piece::isEdgeNum(), osl::Piece::isEmptyNum(), osl::L, osl::longToShort(), osl::NumBitmapEffect::makeLongEffect(), mobilityTable, osl::Piece::number(), osl::SimpleState::pieceAt(), osl::NumBitmapEffect::playerEffectMask(), osl::Square::STAND(), osl::NumBitmapEffect::Sub, osl::U, osl::UL, osl::UR, osl::Square::x(), osl::Square::y(), and osl::Offset::zero().

◆ doEffectShort()

template<Player P, Ptype T, Direction Dir, NumBitmapEffect::Op OP, bool UC>
void osl::effect::NumSimpleEffectTable::doEffectShort ( const SimpleState & state,
Square pos,
int num )
inline

ある位置からある方向に短い利きがある時に,その方向の利きを更新する.

Parameters
P(template)- ある位置にある駒の所有者
T(template)- ある位置にある駒の種類
D(template)- 駒の所有者の立場から見た方向
OP(template)- 利きを足すか,減らすか
pos- 駒の位置
num- 駒番号

Definition at line 54 of file numSimpleEffect.h.

References osl::NumBitmapEffect::Add, changed_effects, effected_changed_mask, effected_mask, effects, osl::BoardMask::getIndexOffset(), osl::BoardMask::index(), osl::Square::index(), osl::Piece::isPieceNum(), osl::NumBitmapEffect::makeEffect(), osl::DirectionTraits< Dir >::mask, osl::Piece::number(), osl::SimpleState::pieceAt(), and osl::NumBitmapEffect::playerEffectMask().

◆ effectedChanged()

const PieceMask osl::effect::NumSimpleEffectTable::effectedChanged ( Player pl) const
inline

Definition at line 244 of file numSimpleEffect.h.

References effected_changed_mask, and osl::playerToIndex().

◆ effectedMask()

const PieceMask osl::effect::NumSimpleEffectTable::effectedMask ( Player pl) const
inline

Definition at line 241 of file numSimpleEffect.h.

References effected_mask, and osl::playerToIndex().

◆ effectSetAt()

const NumBitmapEffect osl::effect::NumSimpleEffectTable::effectSetAt ( Square pos) const
inline

ある位置の利きデータを取り出す.

Parameters
pos- 位置

Definition at line 219 of file numSimpleEffect.h.

References effects, and osl::Square::index().

Referenced by osl::NumEffectState::isConsistent(), osl::effect::operator<<(), and osl::effect::operator==().

◆ init()

void osl::effect::NumSimpleEffectTable::init ( const SimpleState & state)

盤面のデータを元に初期化する.

Parameters
state- 盤面

Definition at line 10 of file numSimpleEffect.cc.

References doEffect(), effects, osl::SimpleState::isOnBoard(), and osl::SimpleState::pieceOf().

Referenced by NumSimpleEffectTable().

◆ invalidateChangedEffects()

void osl::effect::NumSimpleEffectTable::invalidateChangedEffects ( )
inline

Definition at line 255 of file numSimpleEffect.h.

References changed_effect_pieces, and changed_effects.

◆ setChangedPieces()

void osl::effect::NumSimpleEffectTable::setChangedPieces ( NumBitmapEffect const & effect)
inline

Definition at line 247 of file numSimpleEffect.h.

References changed_effect_pieces.

Referenced by doBlockAt().

◆ operator==

bool operator== ( const NumSimpleEffectTable & et1,
const NumSimpleEffectTable & et2 )
friend

Member Data Documentation

◆ changed_effect_pieces

NumBitmapEffect osl::effect::NumSimpleEffectTable::changed_effect_pieces
protected

set of pieces whose effect changed by previous move

Definition at line 36 of file numSimpleEffect.h.

Referenced by changedPieces(), clearChangedEffects(), copyFrom(), invalidateChangedEffects(), and setChangedPieces().

◆ changed_effects

CArray<BoardMask,2> osl::effect::NumSimpleEffectTable::changed_effects
protected

◆ effected_changed_mask

CArray<PieceMask,2> osl::effect::NumSimpleEffectTable::effected_changed_mask

◆ effected_mask

CArray<PieceMask,2> osl::effect::NumSimpleEffectTable::effected_mask

◆ effectedNumTable

EffectedNumTable osl::effect::NumSimpleEffectTable::effectedNumTable

◆ effects

CArray<NumBitmapEffect, Square::SIZE> osl::effect::NumSimpleEffectTable::effects
protected

Definition at line 29 of file numSimpleEffect.h.

Referenced by copyFrom(), doBlockAt(), doEffectLong(), doEffectShort(), effectSetAt(), and init().

◆ mobilityTable

mobility::MobilityTable osl::effect::NumSimpleEffectTable::mobilityTable

mobility

Definition at line 41 of file numSimpleEffect.h.

Referenced by copyFrom(), doBlockAt(), doEffectLong(), and osl::effect::operator==().


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