ネームスペース osl::effect

利きを局面に持たせるためのコード. [詳細]

構成

class  BoardBitEffect
 91マスの盤上の駒の有無を91ビットで表現するState. [詳細]
struct  ApplyDoUndoSimpleMove< P, BoardBitEffect< BaseState > >
struct  ApplyDoUndoDropMove< P, BoardBitEffect< BaseState > >
struct  ApplyDoUndoCaptureMove< P, BoardBitEffect< BaseState > >
struct  BoardBitMask
 SSE2も可なのだが,あまり良い方法が見つからない. [詳細]
class  BoardBitMaskTable
union  Byte8
class  EffectedNum
 盤面上の駒が「黒から見た」方向に長い利きをつけられている時に, 利きをつけている駒の番号を得る たとえば,Uの時は下から上方向の長い利きがついているものとする. その方向の利きがついていない場合はEMPTY_NUM(0x80)を入れておく. [詳細]
class  EffectedNumTable
class  AddMaskAction
 Liberty8で使われるHelper. [詳細]
class  Liberty8
 自分の駒があるマスの8近傍の敵の利きの状態を得る. [詳細]
struct  LongEffect8
 8近傍のどこに長い利きを持つか. [詳細]
class  Liberty8Table
 Liberty8を得るために使うテーブル. [詳細]
struct  SignatureTraits
class  MoveSignatureTable
 PtypeOからMoveSignatureを求めるテーブル. [詳細]
class  NumBitmapEffect
 現在の定義 (2005/3/4以降)

  • 0-39 : 0-39の利き
  • 40-47 : 32-39の長い利き
  • 48-53 : 黒の利きの数(sentinelを合わせて6bit)
  • 54-59 : 白の利きの数(sentinelを合わせて6bit)
[詳細]
class  NumSimpleEffectTable
 局面全体の利きデータ. [詳細]
class  SignatureTable
class  SignatureEffect
 マスごとの利き(MoveSignature)も保持するState. [詳細]
struct  ApplyDoUndoSimpleMove< P, SignatureEffect< BaseState > >
struct  ApplyDoUndoDropMove< P, SignatureEffect< BaseState > >
struct  ApplyDoUndoCaptureMove< P, SignatureEffect< BaseState > >

型定義

typedef unsigned char MoveSignature
 マスの利きを表す型(SignatureEffectで使う予定).

関数

BoardBitMaskoperator^= (BoardBitMask &lhs, BoardBitMask const &rhs)
BoardBitMask operator^ (BoardBitMask const &lhs, BoardBitMask const &rhs)
std::ostream & operator<< (std::ostream &os, BoardBitMask const &boardBitMask)
bool operator== (const EffectedNumTable &, const EffectedNumTable &)
std::ostream & operator<< (std::ostream &, const EffectedNumTable &)
template<Player P>
std::ostream & operator<< (std::ostream &os, Liberty8< P > const &liberty)
template<Player P>
MoveSignature getPlayerMask ()
template<>
MoveSignature getPlayerMask< BLACK > ()
template<>
MoveSignature getPlayerMask< WHITE > ()
std::ostream & operator<< (std::ostream &os, const MoveSignature signature)
bool operator== (const NumSimpleEffectTable &, const NumSimpleEffectTable &)
std::ostream & operator<< (std::ostream &, const NumSimpleEffectTable &)
bool operator!= (const NumSimpleEffectTable &et1, const NumSimpleEffectTable &et2)
static void setBetweenMask (BoardBitMask &mask, Position from, Position to, Ptype ptype)
template std::ostream & operator<< (std::ostream &os, Liberty8< BLACK > const &liberty)
template std::ostream & operator<< (std::ostream &os, Liberty8< WHITE > const &liberty)
static bool hasShortMove (Ptype ptype, int dx, int dy, int dx0, int dy0)
 黒の攻め方の駒ptype から dx, dyの位置にdirectMoveがあるか?
static bool hasLongMove (Ptype ptype, int dx, int dy, int dx0, int dy0)
 黒の攻め方の駒ptype から dx, dyの位置にInDirectMoveがあるか? ただし,隣で伸ばした先が8近傍内に無い場合は shortMoveにする また,目的のちょうど対称の時もshortMoveにする
static unsigned char shortMaskOf (Ptype ptype, int dx, int dy)
 黒の攻め方の駒ptype から dx, dyの位置にいる白玉の 近隣 Dir(白玉に白の目から見てDirの動き到達可能なマス) に 利きを持つ場合は dirToMask(Dir)が0, そうでない場合は1
static unsigned int directionOf (int dx, int dy)
 -dx, -dyの動きが黒に取って, dir であるときに 1<<dirを返す dx, dyは 8近傍の動きのみ許す
std::ostream & operator<< (std::ostream &os, LongEffect8 const &longEffect)

変数

const Liberty8Table Liberty8_Table
const int MS_PLAYER = (1<<7)
const int MS_LONG_U = (1<<5)
const int MS_U = (1<<4)
const int MS_UL_UR = (1<<3)
const int MS_L_R_D = (1<<2)
const int MS_DL_DR = (1<<1)
const int MS_UUL_UUR = (1<<0)
const MoveSignature signature_EMPTY = getPlayerMask<BLACK>()
const MoveSignature signature_EDGE = getPlayerMask<WHITE>()
const MoveSignatureTable Move_Signature_Table

説明

利きを局面に持たせるためのコード.


型定義

typedef unsigned char osl::effect::MoveSignature

マスの利きを表す型(SignatureEffectで使う予定).

動ける方向を示す8ビットの情報

moveSignature.h17 行で定義されています。


関数

static unsigned int osl::effect::directionOf ( int  dx,
int  dy 
) [static]

-dx, -dyの動きが黒に取って, dir であるときに 1<<dirを返す dx, dyは 8近傍の動きのみ許す

liberty8Table.cc81 行で定義されています。

参照先 osl::BLACK, osl::Board_Table, osl::BoardTable::getLongDirection(), osl::isLong(), と osl::longToShort().

参照元 osl::effect::Liberty8Table::longEffectOf().

template<Player P>
MoveSignature osl::effect::getPlayerMask (  )  [inline]
template<>
MoveSignature osl::effect::getPlayerMask< BLACK > (  )  [inline]
template<>
MoveSignature osl::effect::getPlayerMask< WHITE > (  )  [inline]
static bool osl::effect::hasLongMove ( Ptype  ptype,
int  dx,
int  dy,
int  dx0,
int  dy0 
) [static]

黒の攻め方の駒ptype から dx, dyの位置にInDirectMoveがあるか? ただし,隣で伸ばした先が8近傍内に無い場合は shortMoveにする また,目的のちょうど対称の時もshortMoveにする

liberty8Table.cc48 行で定義されています。

参照先 osl::BLACK, osl::PtypeTable::getEffect(), osl::EffectContent::hasEffect(), hasShortMove(), osl::newPtypeO(), と osl::Ptype_Table.

参照元 osl::effect::Liberty8Table::longEffectOf().

static bool osl::effect::hasShortMove ( Ptype  ptype,
int  dx,
int  dy,
int  dx0,
int  dy0 
) [static]
bool osl::effect::operator!= ( const NumSimpleEffectTable &  et1,
const NumSimpleEffectTable &  et2 
) [inline]

numSimpleEffect.h273 行で定義されています。

std::ostream& osl::effect::operator<< ( std::ostream &  os,
LongEffect8 const &  longEffect 
)
template std::ostream& osl::effect::operator<< ( std::ostream &  os,
Liberty8< WHITE > const &  liberty 
)
template std::ostream& osl::effect::operator<< ( std::ostream &  os,
Liberty8< BLACK > const &  liberty 
)
std::ostream & osl::effect::operator<< ( std::ostream &  os,
const NumSimpleEffectTable &  effectTable 
)

numSimpleEffect.cc37 行で定義されています。

参照先 osl::effect::NumSimpleEffectTable::getEffect().

std::ostream & osl::effect::operator<< ( std::ostream &  os,
const MoveSignature  signature 
)

moveSignature.cc9 行で定義されています。

template<Player P>
std::ostream & osl::effect::operator<< ( std::ostream &  os,
Liberty8< P > const &  liberty 
) [inline]

liberty8.cc12 行で定義されています。

std::ostream& osl::effect::operator<< ( std::ostream &  ,
const EffectedNumTable &   
)
std::ostream & osl::effect::operator<< ( std::ostream &  os,
BoardBitMask const &  boardBitMask 
)

boardBitMask.cc11 行で定義されています。

参照先 osl::effect::BoardBitMask::bMask.

bool osl::effect::operator== ( const NumSimpleEffectTable &  et1,
const NumSimpleEffectTable &  et2 
)
bool osl::effect::operator== ( const EffectedNumTable &  e1,
const EffectedNumTable &  e2 
)

effectedNumTable.cc46 行で定義されています。

BoardBitMask osl::effect::operator^ ( BoardBitMask const &  lhs,
BoardBitMask const &  rhs 
) [inline]

boardBitMask.h123 行で定義されています。

参照先 osl::effect::BoardBitMask::mask.

BoardBitMask& osl::effect::operator^= ( BoardBitMask &  lhs,
BoardBitMask const &  rhs 
) [inline]

boardBitMask.h113 行で定義されています。

参照先 osl::effect::BoardBitMask::mask.

static void osl::effect::setBetweenMask ( BoardBitMask &  mask,
Position  from,
Position  to,
Ptype  ptype 
) [static]
static unsigned char osl::effect::shortMaskOf ( Ptype  ptype,
int  dx,
int  dy 
) [static]

黒の攻め方の駒ptype から dx, dyの位置にいる白玉の 近隣 Dir(白玉に白の目から見てDirの動き到達可能なマス) に 利きを持つ場合は dirToMask(Dir)が0, そうでない場合は1

自分が動いて元のマスに利きをつける手は生成しない

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

参照先 osl::Board_Table, osl::BoardTable::getDxForBlack(), osl::BoardTable::getDyForBlack(), と hasShortMove().

参照元 osl::effect::Liberty8Table::Liberty8Table().


変数

tables.cc109 行で定義されています。

参照元 osl::effect::AddMaskAction< Liberty, P, T >::operator()().

const int osl::effect::MS_DL_DR = (1<<1)

moveSignature.h23 行で定義されています。

const int osl::effect::MS_L_R_D = (1<<2)

moveSignature.h22 行で定義されています。

const int osl::effect::MS_LONG_U = (1<<5)

moveSignature.h19 行で定義されています。

const int osl::effect::MS_PLAYER = (1<<7)

moveSignature.h18 行で定義されています。

const int osl::effect::MS_U = (1<<4)

moveSignature.h20 行で定義されています。

const int osl::effect::MS_UL_UR = (1<<3)

moveSignature.h21 行で定義されています。

const int osl::effect::MS_UUL_UUR = (1<<0)

moveSignature.h24 行で定義されています。

const MoveSignature osl::effect::signature_EDGE = getPlayerMask<WHITE>()
const MoveSignature osl::effect::signature_EMPTY = getPlayerMask<BLACK>()
 全て クラス ネームスペース ファイル 関数 変数 型定義 列挙型 列挙型の値 フレンド マクロ定義
Sun May 16 09:57:58 2010に生成されました。  doxygen 1.6.3