My Project
Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
osl::checkmate::ProofDisproof Class Reference

証明数(proof number)と反証数(disproof number). More...

#include <proofDisproof.h>

Public Types

enum  {
  PROOF_SHIFT = 32 , DISPROOF_MASK = 0xffffffffu , PROOF_MAX = (0xffffffffu / 16) , DISPROOF_MAX = (0xffffffffu / 16) ,
  NO_ESCAPE_DISPROOF = (DISPROOF_MAX - 1) , CHECK_MATE_DISPROOF = (DISPROOF_MAX - 2) , NO_CHECK_MATE_PROOF = (PROOF_MAX - 1) , PAWN_CHECK_MATE_PROOF = (PROOF_MAX - 2) ,
  LOOP_DETECTION_PROOF = (PROOF_MAX - 3) , ATTACK_BACK_PROOF = (PROOF_MAX - 4)
}
 
enum  { DISPROOF_LIMIT = (DISPROOF_MAX - 3) , PROOF_LIMIT = (PROOF_MAX - 5) }
 

Public Member Functions

 ProofDisproof ()
 
 ProofDisproof (unsigned int proof, unsigned int disproof)
 
unsigned int proof () const
 
unsigned int disproof () const
 
bool isCheckmateSuccess () const
 
bool isCheckmateFail () const
 
bool isFinal () const
 
bool isUnknown () const
 
bool isPawnDropFoul (Move move) const
 打歩詰めなら真
 
bool isLoopDetection () const
 
unsigned long long ulonglongValue () const
 
bool isBetterForAttack (const ProofDisproof &r) const
 this が r より攻方に都合が良い時に真
 
bool isBetterForDefense (const ProofDisproof &r) const
 this が r より受方に都合が良い時に真
 
const ProofDisproofbetterForAttack (const ProofDisproof &r) const
 攻方に都合が良い方を返す
 
const ProofDisproofbetterForDefense (const ProofDisproof &r) const
 受方に都合が良い方を返す
 

Static Public Member Functions

static const ProofDisproof makeDirect (unsigned long long value)
 
static const ProofDisproof NoEscape ()
 
static const ProofDisproof Checkmate ()
 
static const ProofDisproof NoCheckmate ()
 
static const ProofDisproof PawnCheckmate ()
 
static const ProofDisproof LoopDetection ()
 
static const ProofDisproof AttackBack ()
 
static const ProofDisproof Unknown ()
 
static const ProofDisproof Bottom ()
 攻方にも受方にも不都合な仮想的な数
 

Static Public Attributes

static const unsigned int BigProofNumber =PROOF_MAX
 

Private Member Functions

 ProofDisproof (unsigned long long value)
 range check をしない private バージョン
 

Static Private Member Functions

static void testConsistency ()
 
static unsigned long long compose (unsigned long long proof, unsigned long long disproof)
 
static const ProofDisproof make (unsigned int proof, unsigned int disproof)
 

Private Attributes

unsigned long long pdp
 

Detailed Description

証明数(proof number)と反証数(disproof number).

詰み局面と確定した時は proofNumber=0 不詰み局面と確定した時は disproofNumber=0

Definition at line 16 of file proofDisproof.h.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
PROOF_SHIFT 
DISPROOF_MASK 
PROOF_MAX 
DISPROOF_MAX 
NO_ESCAPE_DISPROOF 

反証数の定数: 詰んだ時には,詰の種類の区別に利用

CHECK_MATE_DISPROOF 
NO_CHECK_MATE_PROOF 

証明数の定数: 反証された時には,不詰の種類の区別に利用

PAWN_CHECK_MATE_PROOF 
LOOP_DETECTION_PROOF 
ATTACK_BACK_PROOF 

Definition at line 20 of file proofDisproof.h.

◆ anonymous enum

anonymous enum
Enumerator
DISPROOF_LIMIT 

通常の反証数の上限

PROOF_LIMIT 

通常の証明数の上限

Definition at line 37 of file proofDisproof.h.

Constructor & Destructor Documentation

◆ ProofDisproof() [1/3]

osl::checkmate::ProofDisproof::ProofDisproof ( unsigned long long  value)
inlineprivate

range check をしない private バージョン

Definition at line 50 of file proofDisproof.h.

◆ ProofDisproof() [2/3]

osl::checkmate::ProofDisproof::ProofDisproof ( )
inline

◆ ProofDisproof() [3/3]

osl::checkmate::ProofDisproof::ProofDisproof ( unsigned int  proof,
unsigned int  disproof 
)
inline

Definition at line 62 of file proofDisproof.h.

References disproof(), DISPROOF_LIMIT, DISPROOF_MAX, proof(), PROOF_LIMIT, and PROOF_MAX.

Member Function Documentation

◆ AttackBack()

static const ProofDisproof osl::checkmate::ProofDisproof::AttackBack ( )
inlinestatic

Definition at line 79 of file proofDisproof.h.

References ATTACK_BACK_PROOF, and ProofDisproof().

◆ betterForAttack()

const ProofDisproof & osl::checkmate::ProofDisproof::betterForAttack ( const ProofDisproof r) const
inline

攻方に都合が良い方を返す

Definition at line 128 of file proofDisproof.h.

References isBetterForAttack().

◆ betterForDefense()

const ProofDisproof & osl::checkmate::ProofDisproof::betterForDefense ( const ProofDisproof r) const
inline

受方に都合が良い方を返す

Definition at line 135 of file proofDisproof.h.

References isBetterForDefense().

◆ Bottom()

static const ProofDisproof osl::checkmate::ProofDisproof::Bottom ( )
inlinestatic

攻方にも受方にも不都合な仮想的な数

Definition at line 82 of file proofDisproof.h.

References DISPROOF_MAX, make(), and PROOF_MAX.

◆ Checkmate()

static const ProofDisproof osl::checkmate::ProofDisproof::Checkmate ( )
inlinestatic

◆ compose()

static unsigned long long osl::checkmate::ProofDisproof::compose ( unsigned long long  proof,
unsigned long long  disproof 
)
inlinestaticprivate

Definition at line 45 of file proofDisproof.h.

References disproof(), proof(), and PROOF_SHIFT.

Referenced by make().

◆ disproof()

unsigned int osl::checkmate::ProofDisproof::disproof ( ) const
inline

◆ isBetterForAttack()

bool osl::checkmate::ProofDisproof::isBetterForAttack ( const ProofDisproof r) const
inline

this が r より攻方に都合が良い時に真

Definition at line 106 of file proofDisproof.h.

References disproof(), and proof().

Referenced by betterForAttack().

◆ isBetterForDefense()

bool osl::checkmate::ProofDisproof::isBetterForDefense ( const ProofDisproof r) const
inline

this が r より受方に都合が良い時に真

Definition at line 117 of file proofDisproof.h.

References disproof(), and proof().

Referenced by betterForDefense().

◆ isCheckmateFail()

bool osl::checkmate::ProofDisproof::isCheckmateFail ( ) const
inline

◆ isCheckmateSuccess()

bool osl::checkmate::ProofDisproof::isCheckmateSuccess ( ) const
inline

◆ isFinal()

bool osl::checkmate::ProofDisproof::isFinal ( ) const
inline

◆ isLoopDetection()

bool osl::checkmate::ProofDisproof::isLoopDetection ( ) const
inline

◆ isPawnDropFoul()

bool osl::checkmate::ProofDisproof::isPawnDropFoul ( Move  move) const
inline

打歩詰めなら真

Definition at line 92 of file proofDisproof.h.

References osl::Move::isDrop(), osl::Move::isNormal(), NoEscape(), osl::PAWN, pdp, and osl::Move::ptype().

◆ isUnknown()

bool osl::checkmate::ProofDisproof::isUnknown ( ) const
inline

Definition at line 89 of file proofDisproof.h.

References isFinal().

◆ LoopDetection()

static const ProofDisproof osl::checkmate::ProofDisproof::LoopDetection ( )
inlinestatic

◆ make()

static const ProofDisproof osl::checkmate::ProofDisproof::make ( unsigned int  proof,
unsigned int  disproof 
)
inlinestaticprivate

Definition at line 54 of file proofDisproof.h.

References compose(), disproof(), proof(), and ProofDisproof().

Referenced by Bottom().

◆ makeDirect()

static const ProofDisproof osl::checkmate::ProofDisproof::makeDirect ( unsigned long long  value)
inlinestatic

Definition at line 71 of file proofDisproof.h.

References ProofDisproof().

◆ NoCheckmate()

static const ProofDisproof osl::checkmate::ProofDisproof::NoCheckmate ( )
inlinestatic

◆ NoEscape()

static const ProofDisproof osl::checkmate::ProofDisproof::NoEscape ( )
inlinestatic

◆ PawnCheckmate()

static const ProofDisproof osl::checkmate::ProofDisproof::PawnCheckmate ( )
inlinestatic

◆ proof()

unsigned int osl::checkmate::ProofDisproof::proof ( ) const
inline

◆ testConsistency()

void osl::checkmate::ProofDisproof::testConsistency ( )
staticprivate

Definition at line 4 of file proofDisproof.cc.

◆ ulonglongValue()

unsigned long long osl::checkmate::ProofDisproof::ulonglongValue ( ) const
inline

Definition at line 99 of file proofDisproof.h.

References pdp.

Referenced by osl::checkmate::operator<(), and osl::checkmate::operator==().

◆ Unknown()

static const ProofDisproof osl::checkmate::ProofDisproof::Unknown ( )
inlinestatic

Definition at line 80 of file proofDisproof.h.

References ProofDisproof().

Member Data Documentation

◆ BigProofNumber

const unsigned int osl::checkmate::ProofDisproof::BigProofNumber =PROOF_MAX
static

Definition at line 101 of file proofDisproof.h.

◆ pdp

unsigned long long osl::checkmate::ProofDisproof::pdp
private

Definition at line 18 of file proofDisproof.h.

Referenced by disproof(), isLoopDetection(), isPawnDropFoul(), proof(), and ulonglongValue().


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