39 :
piece((static_cast<int>(owner)<<20)
41 +((num)<<8)+ square.uintValue())
64 return ((
piece&0xff00)>>8);
81 return static_cast<int>(
static_cast<unsigned int>(
piece)&0x800000ff)>0;
89 return static_cast<int>((-
piece)&0x800000ff)>0;
106 return isOnBoardByOwner<BLACK>();
108 return isOnBoardByOwner<WHITE>();
134 assert(promote_mask==0 || promote_mask==(1<<23));
152 int mask=
piece&((1<<19)|0xff);
161 return (
piece&0x8000)!=0;
164 return (num&0x80)!=0;
167 return (
piece&0x4000)!=0;
171 return (num&0x40)!=0;
174 return (num&0xc0)==0;
201 return (
piece&0xc000)==0;
208 return static_cast<int>(
piece)>=0;
224 return ((
piece+0xe0000)&0x104000)==0;
239 return canMoveOn<BLACK>();
241 return canMoveOn<WHITE>();
263 std::ostream&
operator<<(std::ostream& os,
const Piece piece);