29 void Init() { ListSize = 0; }
32 Squares[ListSize] =
sq;
39 return Squares[index];
43 for (
uint i = 0; i < ListSize; i++) {
44 if (Squares[i] == sq) {
54 if (index != ListSize) {
55 Squares[index] = Squares[ListSize];
67 Bits_a1h4 = Bits_a5h8 = 0;
71 void Clear(
void) { Bits_a1h4 = Bits_a5h8 = 0; }
72 void AddAll(
void) { Bits_a1h4 = Bits_a5h8 = 0xFFFFFFFFu; }
77 Bits_a1h4 |= (1 <<
sq);
79 Bits_a5h8 |= (1 << (sq & 31));
92 Bits_a1h4 |= (1 <<
sq);
94 Bits_a5h8 |= (1 << (sq & 31));
102 return (Bits_a1h4 & (1 << sq)) != 0;
104 return (Bits_a5h8 & (1 << (sq & 31))) != 0;
111 Bits_a1h4 &= ~(1 <<
sq);
113 Bits_a5h8 &= ~(1 << (sq & 31));
125 {
NS,
A2,
NS,
NS,
NS,
NS,
NS,
NS,
B1,
B2, NS },
126 {
NS,
B2,
NS,
NS,
A1,
A2,
NS,
NS,
C1,
C2, NS },
127 {
NS,
C2,
NS,
NS,
B1,
B2,
NS,
NS,
D1,
D2, NS },
128 {
NS,
D2,
NS,
NS,
C1,
C2,
NS,
NS,
E1,
E2, NS },
129 {
NS,
E2,
NS,
NS,
D1,
D2,
NS,
NS,
F1,
F2, NS },
130 {
NS,
F2,
NS,
NS,
E1,
E2,
NS,
NS,
G1,
G2, NS },
131 {
NS,
G2,
NS,
NS,
F1,
F2,
NS,
NS,
H1,
H2, NS },
132 {
NS,
H2,
NS,
NS,
G1,
G2,
NS,
NS,
NS,
NS, NS },
133 {
NS,
A3,
A1,
NS,
NS,
NS,
NS,
NS,
B2,
B3,
B1 },
134 {
NS,
B3,
B1,
NS,
A2,
A3,
A1,
NS,
C2,
C3,
C1 },
135 {
NS,
C3,
C1,
NS,
B2,
B3,
B1,
NS,
D2,
D3,
D1 },
136 {
NS,
D3,
D1,
NS,
C2,
C3,
C1,
NS,
E2,
E3,
E1 },
137 {
NS,
E3,
E1,
NS,
D2,
D3,
D1,
NS,
F2,
F3,
F1 },
138 {
NS,
F3,
F1,
NS,
E2,
E3,
E1,
NS,
G2,
G3,
G1 },
139 {
NS,
G3,
G1,
NS,
F2,
F3,
F1,
NS,
H2,
H3,
H1 },
140 {
NS,
H3,
H1,
NS,
G2,
G3,
G1,
NS,
NS,
NS, NS },
141 {
NS,
A4,
A2,
NS,
NS,
NS,
NS,
NS,
B3,
B4,
B2 },
142 {
NS,
B4,
B2,
NS,
A3,
A4,
A2,
NS,
C3,
C4,
C2 },
143 {
NS,
C4,
C2,
NS,
B3,
B4,
B2,
NS,
D3,
D4,
D2 },
144 {
NS,
D4,
D2,
NS,
C3,
C4,
C2,
NS,
E3,
E4,
E2 },
145 {
NS,
E4,
E2,
NS,
D3,
D4,
D2,
NS,
F3,
F4,
F2 },
146 {
NS,
F4,
F2,
NS,
E3,
E4,
E2,
NS,
G3,
G4,
G2 },
147 {
NS,
G4,
G2,
NS,
F3,
F4,
F2,
NS,
H3,
H4,
H2 },
148 {
NS,
H4,
H2,
NS,
G3,
G4,
G2,
NS,
NS,
NS, NS },
149 {
NS,
A5,
A3,
NS,
NS,
NS,
NS,
NS,
B4,
B5,
B3 },
150 {
NS,
B5,
B3,
NS,
A4,
A5,
A3,
NS,
C4,
C5,
C3 },
151 {
NS,
C5,
C3,
NS,
B4,
B5,
B3,
NS,
D4,
D5,
D3 },
152 {
NS,
D5,
D3,
NS,
C4,
C5,
C3,
NS,
E4,
E5,
E3 },
153 {
NS,
E5,
E3,
NS,
D4,
D5,
D3,
NS,
F4,
F5,
F3 },
154 {
NS,
F5,
F3,
NS,
E4,
E5,
E3,
NS,
G4,
G5,
G3 },
155 {
NS,
G5,
G3,
NS,
F4,
F5,
F3,
NS,
H4,
H5,
H3 },
156 {
NS,
H5,
H3,
NS,
G4,
G5,
G3,
NS,
NS,
NS, NS },
157 {
NS,
A6,
A4,
NS,
NS,
NS,
NS,
NS,
B5,
B6,
B4 },
158 {
NS,
B6,
B4,
NS,
A5,
A6,
A4,
NS,
C5,
C6,
C4 },
159 {
NS,
C6,
C4,
NS,
B5,
B6,
B4,
NS,
D5,
D6,
D4 },
160 {
NS,
D6,
D4,
NS,
C5,
C6,
C4,
NS,
E5,
E6,
E4 },
161 {
NS,
E6,
E4,
NS,
D5,
D6,
D4,
NS,
F5,
F6,
F4 },
162 {
NS,
F6,
F4,
NS,
E5,
E6,
E4,
NS,
G5,
G6,
G4 },
163 {
NS,
G6,
G4,
NS,
F5,
F6,
F4,
NS,
H5,
H6,
H4 },
164 {
NS,
H6,
H4,
NS,
G5,
G6,
G4,
NS,
NS,
NS, NS },
165 {
NS,
A7,
A5,
NS,
NS,
NS,
NS,
NS,
B6,
B7,
B5 },
166 {
NS,
B7,
B5,
NS,
A6,
A7,
A5,
NS,
C6,
C7,
C5 },
167 {
NS,
C7,
C5,
NS,
B6,
B7,
B5,
NS,
D6,
D7,
D5 },
168 {
NS,
D7,
D5,
NS,
C6,
C7,
C5,
NS,
E6,
E7,
E5 },
169 {
NS,
E7,
E5,
NS,
D6,
D7,
D5,
NS,
F6,
F7,
F5 },
170 {
NS,
F7,
F5,
NS,
E6,
E7,
E5,
NS,
G6,
G7,
G5 },
171 {
NS,
G7,
G5,
NS,
F6,
F7,
F5,
NS,
H6,
H7,
H5 },
172 {
NS,
H7,
H5,
NS,
G6,
G7,
G5,
NS,
NS,
NS, NS },
173 {
NS,
A8,
A6,
NS,
NS,
NS,
NS,
NS,
B7,
B8,
B6 },
174 {
NS,
B8,
B6,
NS,
A7,
A8,
A6,
NS,
C7,
C8,
C6 },
175 {
NS,
C8,
C6,
NS,
B7,
B8,
B6,
NS,
D7,
D8,
D6 },
176 {
NS,
D8,
D6,
NS,
C7,
C8,
C6,
NS,
E7,
E8,
E6 },
177 {
NS,
E8,
E6,
NS,
D7,
D8,
D6,
NS,
F7,
F8,
F6 },
178 {
NS,
F8,
F6,
NS,
E7,
E8,
E6,
NS,
G7,
G8,
G6 },
179 {
NS,
G8,
G6,
NS,
F7,
F8,
F6,
NS,
H7,
H8,
H6 },
180 {
NS,
H8,
H6,
NS,
G7,
G8,
G6,
NS,
NS,
NS, NS },
181 {
NS,
NS,
A7,
NS,
NS,
NS,
NS,
NS,
B8,
NS,
B7 },
182 {
NS,
NS,
B7,
NS,
A8,
NS,
A7,
NS,
C8,
NS,
C7 },
183 {
NS,
NS,
C7,
NS,
B8,
NS,
B7,
NS,
D8,
NS,
D7 },
184 {
NS,
NS,
D7,
NS,
C8,
NS,
C7,
NS,
E8,
NS,
E7 },
185 {
NS,
NS,
E7,
NS,
D8,
NS,
D7,
NS,
F8,
NS,
F7 },
186 {
NS,
NS,
F7,
NS,
E8,
NS,
E7,
NS,
G8,
NS,
G7 },
187 {
NS,
NS,
G7,
NS,
F8,
NS,
F7,
NS,
H8,
NS,
H7 },
188 {
NS,
NS,
H7,
NS,
G8,
NS,
G7,
NS,
NS,
NS, NS },
189 {
NS,
NS,
NS,
NS,
NS,
NS,
NS,
NS,
NS,
NS, NS },
190 {
NS,
NS,
NS,
NS,
NS,
NS,
NS,
NS,
NS,
NS, NS }
202 {
NS,
A8,
A1,
NS,
A1,
A1,
A1,
NS,
H1,
H8, A1 },
203 {
NS,
B8,
B1,
NS,
A1,
A2,
B1,
NS,
H1,
H7, B1 },
204 {
NS,
C8,
C1,
NS,
A1,
A3,
C1,
NS,
H1,
H6, C1 },
205 {
NS,
D8,
D1,
NS,
A1,
A4,
D1,
NS,
H1,
H5, D1 },
206 {
NS,
E8,
E1,
NS,
A1,
A5,
E1,
NS,
H1,
H4, E1 },
207 {
NS,
F8,
F1,
NS,
A1,
A6,
F1,
NS,
H1,
H3, F1 },
208 {
NS,
G8,
G1,
NS,
A1,
A7,
G1,
NS,
H1,
H2, G1 },
209 {
NS,
H8,
H1,
NS,
A1,
A8,
H1,
NS,
H1,
H1, H1 },
210 {
NS,
A8,
A1,
NS,
A2,
A2,
A2,
NS,
H2,
G8, B1 },
211 {
NS,
B8,
B1,
NS,
A2,
A3,
A1,
NS,
H2,
H8, C1 },
212 {
NS,
C8,
C1,
NS,
A2,
A4,
B1,
NS,
H2,
H7, D1 },
213 {
NS,
D8,
D1,
NS,
A2,
A5,
C1,
NS,
H2,
H6, E1 },
214 {
NS,
E8,
E1,
NS,
A2,
A6,
D1,
NS,
H2,
H5, F1 },
215 {
NS,
F8,
F1,
NS,
A2,
A7,
E1,
NS,
H2,
H4, G1 },
216 {
NS,
G8,
G1,
NS,
A2,
A8,
F1,
NS,
H2,
H3, H1 },
217 {
NS,
H8,
H1,
NS,
A2,
B8,
G1,
NS,
H2,
H2, H2 },
218 {
NS,
A8,
A1,
NS,
A3,
A3,
A3,
NS,
H3,
F8, C1 },
219 {
NS,
B8,
B1,
NS,
A3,
A4,
A2,
NS,
H3,
G8, D1 },
220 {
NS,
C8,
C1,
NS,
A3,
A5,
A1,
NS,
H3,
H8, E1 },
221 {
NS,
D8,
D1,
NS,
A3,
A6,
B1,
NS,
H3,
H7, F1 },
222 {
NS,
E8,
E1,
NS,
A3,
A7,
C1,
NS,
H3,
H6, G1 },
223 {
NS,
F8,
F1,
NS,
A3,
A8,
D1,
NS,
H3,
H5, H1 },
224 {
NS,
G8,
G1,
NS,
A3,
B8,
E1,
NS,
H3,
H4, H2 },
225 {
NS,
H8,
H1,
NS,
A3,
C8,
F1,
NS,
H3,
H3, H3 },
226 {
NS,
A8,
A1,
NS,
A4,
A4,
A4,
NS,
H4,
E8, D1 },
227 {
NS,
B8,
B1,
NS,
A4,
A5,
A3,
NS,
H4,
F8, E1 },
228 {
NS,
C8,
C1,
NS,
A4,
A6,
A2,
NS,
H4,
G8, F1 },
229 {
NS,
D8,
D1,
NS,
A4,
A7,
A1,
NS,
H4,
H8, G1 },
230 {
NS,
E8,
E1,
NS,
A4,
A8,
B1,
NS,
H4,
H7, H1 },
231 {
NS,
F8,
F1,
NS,
A4,
B8,
C1,
NS,
H4,
H6, H2 },
232 {
NS,
G8,
G1,
NS,
A4,
C8,
D1,
NS,
H4,
H5, H3 },
233 {
NS,
H8,
H1,
NS,
A4,
D8,
E1,
NS,
H4,
H4, H4 },
234 {
NS,
A8,
A1,
NS,
A5,
A5,
A5,
NS,
H5,
D8, E1 },
235 {
NS,
B8,
B1,
NS,
A5,
A6,
A4,
NS,
H5,
E8, F1 },
236 {
NS,
C8,
C1,
NS,
A5,
A7,
A3,
NS,
H5,
F8, G1 },
237 {
NS,
D8,
D1,
NS,
A5,
A8,
A2,
NS,
H5,
G8, H1 },
238 {
NS,
E8,
E1,
NS,
A5,
B8,
A1,
NS,
H5,
H8, H2 },
239 {
NS,
F8,
F1,
NS,
A5,
C8,
B1,
NS,
H5,
H7, H3 },
240 {
NS,
G8,
G1,
NS,
A5,
D8,
C1,
NS,
H5,
H6, H4 },
241 {
NS,
H8,
H1,
NS,
A5,
E8,
D1,
NS,
H5,
H5, H5 },
242 {
NS,
A8,
A1,
NS,
A6,
A6,
A6,
NS,
H6,
C8, F1 },
243 {
NS,
B8,
B1,
NS,
A6,
A7,
A5,
NS,
H6,
D8, G1 },
244 {
NS,
C8,
C1,
NS,
A6,
A8,
A4,
NS,
H6,
E8, H1 },
245 {
NS,
D8,
D1,
NS,
A6,
B8,
A3,
NS,
H6,
F8, H2 },
246 {
NS,
E8,
E1,
NS,
A6,
C8,
A2,
NS,
H6,
G8, H3 },
247 {
NS,
F8,
F1,
NS,
A6,
D8,
A1,
NS,
H6,
H8, H4 },
248 {
NS,
G8,
G1,
NS,
A6,
E8,
B1,
NS,
H6,
H7, H5 },
249 {
NS,
H8,
H1,
NS,
A6,
F8,
C1,
NS,
H6,
H6, H6 },
250 {
NS,
A8,
A1,
NS,
A7,
A7,
A7,
NS,
H7,
B8, G1 },
251 {
NS,
B8,
B1,
NS,
A7,
A8,
A6,
NS,
H7,
C8, H1 },
252 {
NS,
C8,
C1,
NS,
A7,
B8,
A5,
NS,
H7,
D8, H2 },
253 {
NS,
D8,
D1,
NS,
A7,
C8,
A4,
NS,
H7,
E8, H3 },
254 {
NS,
E8,
E1,
NS,
A7,
D8,
A3,
NS,
H7,
F8, H4 },
255 {
NS,
F8,
F1,
NS,
A7,
E8,
A2,
NS,
H7,
G8, H5 },
256 {
NS,
G8,
G1,
NS,
A7,
F8,
A1,
NS,
H7,
H8, H6 },
257 {
NS,
H8,
H1,
NS,
A7,
G8,
B1,
NS,
H7,
H7, H7 },
258 {
NS,
A8,
A1,
NS,
A8,
A8,
A8,
NS,
H8,
A8, H1 },
259 {
NS,
B8,
B1,
NS,
A8,
B8,
A7,
NS,
H8,
B8, H2 },
260 {
NS,
C8,
C1,
NS,
A8,
C8,
A6,
NS,
H8,
C8, H3 },
261 {
NS,
D8,
D1,
NS,
A8,
D8,
A5,
NS,
H8,
D8, H4 },
262 {
NS,
E8,
E1,
NS,
A8,
E8,
A4,
NS,
H8,
E8, H5 },
263 {
NS,
F8,
F1,
NS,
A8,
F8,
A3,
NS,
H8,
F8, H6 },
264 {
NS,
G8,
G1,
NS,
A8,
G8,
A2,
NS,
H8,
G8, H7 },
265 {
NS,
H8,
H1,
NS,
A8,
H8,
A1,
NS,
H8,
H8, H8 },
266 {
NS,
NS,
NS,
NS,
NS,
NS,
NS,
NS,
NS,
NS, NS },
267 {
NS,
NS,
NS,
NS,
NS,
NS,
NS,
NS,
NS,
NS, NS }
const squareT NULL_SQUARE
constexpr squareT sqLast[66][11]
constexpr squareT square_Move(squareT sq, directionT dir)
constexpr uint MAX_SQUARELIST
bool Contains(squareT sq)
SquareSet(squareT *squares)
void AddAll(squareT *squares)
bool Contains(squareT sq)
constexpr squareT sqMove[66][11]
constexpr squareT square_Last(squareT sq, directionT dir)