3 #ifndef OSL_PIECESTAND_H
4 #define OSL_PIECESTAND_H
44 static const CArray<Ptype,7>
order;
47 static const CArray<unsigned char,PTYPE_MAX+1>
shift;
48 static const CArray<unsigned char,PTYPE_MAX+1>
mask;
56 int knightCount,
int silverCount,
57 int goldCount,
int bishopCount,
58 int rookCount,
int kingCount)
74 assert(num == (num &
mask[type]));
81 assert(num == (num &
mask[type]));
82 assert(
get(type) >= num);
164 return hasMoreThan<BLACK>(other);
166 return hasMoreThan<WHITE>(other);
179 unsigned int my_mask = mask0-((mask0&0x40000024)>>2);
181 my_mask -= (mask0&0x08022200)>>3;
183 my_mask -= (mask0&0x00800000)>>5;
194 const unsigned int mask0=diff0&
carryMask;
197 const unsigned int mask02=(mask0&0x40000024u)+(mask0&0x48022224u);
198 unsigned int my_mask=mask0-(mask02>>3);
201 my_mask -= (mask0&0x00800000)>>5;
271 std::ostream&
operator<<(std::ostream&, PieceStand l);