3 #ifndef OSL_BOARDMASK_H 4 #define OSL_BOARDMASK_H 17 bool operator==(
const BoardMask&,
const BoardMask&);
18 std::ostream&
operator<<(std::ostream&,
const BoardMask&);
37 void clear() { contents[0]=contents[1]=0; }
38 void invalidate() { contents[0] =
static_cast<uint64_t
>(-1); }
39 bool isInvalid()
const {
return contents[0] ==
static_cast<uint64_t
>(-1); }
40 void set(
unsigned int i) {
42 contents[j]|=(1ull<<(i&63));
49 contents[j] &= ~(1ull<<(i&63));
52 bool test(
unsigned int i)
const {
54 return (contents[j]&(1ull<<(i&63)))!=0;
59 return (contents[0] & mask.
contents[0])
71 return contents[0] || contents[1];
80 static int index(
int x,
int y){
return x*12+y+1; }
83 return v-((v>>2)&0x3c);
85 template<Direction Dir,Player P>
89 int val=blackDx*12+blackDy;
90 if(P==
BLACK)
return val;
const BoardMaskTable5x3Center Board_Mask_Table5x3_Center
BoardMask & operator|=(const BoardMask &mask)
static int getIndexOffset()
static const Square makeDirect(int value)
const BoardMask & mask(Square p) const
p中心の5x3 の範囲のbitを立てたもの, centering
friend bool operator==(const BoardMask &, const BoardMask &)
CArray< BoardMask, Square::SIZE > data
bool test(unsigned int i) const
static Square toSquare(int n)
CArray< unsigned long long, 3 > contents
the third one is only for edge
CArray< BoardMask, Square::SIZE > data
const BoardMaskTable3x3 Board_Mask_Table3x3
unsigned int index() const
BoardMask & operator=(const BoardMask &src)
void reset(unsigned int i)
const BoardMask operator|(const BoardMask &l, const BoardMask &r)
const BoardMaskTable5x5 Board_Mask_Table5x5
CArray< BoardMask, Square::SIZE > data
bool anyInRange(const BoardMask &mask) const
bool operator==(BitXmask l, BitXmask r)
static int takeOneBit(Integer &mask)
BoardMask(const BoardMask &src)
bool test(Square pos) const
std::ostream & operator<<(std::ostream &, const BitXmask)
static int index(Square pos)
static int index(int x, int y)
const BoardMask & mask(Square p) const
p中心の3x3 の範囲のbitを立てたもの, centeringなし
const BoardMask & mask(Square p) const
p中心の5x5 の範囲のbitを立てたもの, centeringなし