3 #ifndef OSL_CHECKMATE_KING8INFO_H
4 #define OSL_CHECKMATE_KING8INFO_H
9 #include <boost/cstdint.hpp>
47 const PieceMask& pinned);
53 return (
unsigned int)(
value&0xffull);
58 return (
unsigned int)((
value>>8)&0xffull);
63 return (
unsigned int)(
value&0xffffull);
68 return (
unsigned int)((
value>>16)&0xffull);
73 return (
unsigned int)((
value>>24)&0xffull);
77 return (
unsigned int)((
value>>32)&0xffull);
81 return (
unsigned int)((
value>>40)&0xffull);
86 return (
unsigned int)((
value>>48)&0xfull);
88 template<Player P,Direction Dir>
90 if((
value & (1ull<<(24+Dir)))==0)
return 0;
92 if(state.countEffect(P,pos)<2 &&
100 Square king=state.kingSquare<altP>();
101 return moveCandidateDir<P,UL>(state,king)+
102 moveCandidateDir<P,U>(state,king)+
103 moveCandidateDir<P,UR>(state,king)+
104 moveCandidateDir<P,L>(state,king)+
105 moveCandidateDir<P,R>(state,king)+
106 moveCandidateDir<P,DL>(state,king)+
107 moveCandidateDir<P,D>(state,king)+
108 moveCandidateDir<P,DR>(state,king);
112 if(player==
BLACK)
return countMoveCandidate<BLACK>(state);
113 else return countMoveCandidate<WHITE>(state);
119 Square king=state.kingSquare<altP>();
120 return (moveCandidateDir<P,UL>(state,king)<<
UL)+
121 (moveCandidateDir<P,U>(state,king)<<
U)+
122 (moveCandidateDir<P,UR>(state,king)<<
UR)+
123 (moveCandidateDir<P,L>(state,king)<<
L)+
124 (moveCandidateDir<P,R>(state,king)<<
R)+
125 (moveCandidateDir<P,DL>(state,king)<<
DL)+
126 (moveCandidateDir<P,D>(state,king)<<
D)+
127 (moveCandidateDir<P,DR>(state,king)<<
DR);
133 Square king=state.kingSquare<altP>();
134 if(moveCandidateDir<P,U>(state,king)!=0)
return true;
135 if(moveCandidateDir<P,UL>(state,king)!=0)
return true;
136 if(moveCandidateDir<P,UR>(state,king)!=0)
return true;
137 if(moveCandidateDir<P,L>(state,king)!=0)
return true;
138 if(moveCandidateDir<P,R>(state,king)!=0)
return true;
139 if(moveCandidateDir<P,D>(state,king)!=0)
return true;
140 if(moveCandidateDir<P,DL>(state,king)!=0)
return true;
141 if(moveCandidateDir<P,DR>(state,king)!=0)
return true;
152 template<Player P,Direction Dir>
158 PieceMask on_board_defense);
184 using checkmate::King8Info;