13 # define move_assert(x) assert(x)
15 # define move_assert(x)
71 unsigned int hash()
const;
82 + (static_cast<unsigned int>(capture_ptype)<<16)
84 + (static_cast<unsigned int>(ptype)<<24)
85 + (static_cast<int>(player)<<28));
112 init(from, to, ptype, capture_ptype, is_promote, player);
222 assert(
from().uintValue()==0);
281 + (static_cast<unsigned int>(newPtype)<<24));
291 return (P==
BLACK ? to.
y()==2 : to.
y()==8);
292 default:
return false;
302 if(
isDrop())
return false;
306 if(
player()==
BLACK)
return ignoreUnpromote<BLACK>();
307 else return ignoreUnpromote<WHITE>();
318 return (P==
BLACK ?
to().y()!=1 :
to().y()!=9);
320 return (P==
BLACK ?
to().y()==2 :
to().y()==8);
323 default:
return false;
327 if(
player()==
BLACK)
return hasIgnoredUnpromote<BLACK>();
328 else return hasIgnoredUnpromote<WHITE>();
334 #ifdef PRESERVE_MOVE_ORDER
336 l=(l&0xffff0000)+((l>>8)&0xff)+((l<<8)&0xff00);
338 r=(r&0xffff0000)+((r>>8)&0xff)+((r<<8)&0xff00);
350 return ! (lhs == rhs);
356 template <
typename T>
struct hash;