113 starting |= (starting << 8uz);
114 starting |= (starting << 16uz);
115 starting |= (starting << 32uz);
122 starting |= (starting >> 8uz);
123 starting |= (starting >> 16uz);
124 starting |= (starting >> 32uz);
133 constexpr auto mask1 = notAFile & (notAFile << 1uz);
134 constexpr auto mask2 = mask1 & (mask1 << 2uz);
136 starting |= notAFile & (starting << 1uz);
137 starting |= mask1 & (starting << 2uz);
138 starting |= mask2 & (starting << 4uz);
147 constexpr auto mask1 = notHFile & (notHFile >> 1uz);
148 constexpr auto mask2 = mask1 & (mask1 >> 2uz);
150 starting |= notHFile & (starting >> 1uz);
151 starting |= mask1 & (starting >> 2uz);
152 starting |= mask2 & (starting >> 4uz);
161 constexpr auto mask1 = notAFile & (notAFile << 9uz);
162 constexpr auto mask2 = mask1 & (mask1 << 18uz);
164 starting |= notAFile & (starting << 9uz);
165 starting |= mask1 & (starting << 18uz);
166 starting |= mask2 & (starting << 36uz);
175 constexpr auto mask1 = notAFile & (notAFile >> 7uz);
176 constexpr auto mask2 = mask1 & (mask1 >> 14uz);
178 starting |= notAFile & (starting >> 7uz);
179 starting |= mask1 & (starting >> 14uz);
180 starting |= mask2 & (starting >> 28uz);
189 constexpr auto mask1 = notHFile & (notHFile << 7uz);
190 constexpr auto mask2 = mask1 & (mask1 << 14uz);
192 starting |= notHFile & (starting << 7uz);
193 starting |= mask1 & (starting << 14uz);
194 starting |= mask2 & (starting << 28uz);
203 constexpr auto mask1 = notHFile & (notHFile >> 9uz);
204 constexpr auto mask2 = mask1 & (mask1 >> 18uz);
206 starting |= notHFile & (starting >> 9uz);
207 starting |= mask1 & (starting >> 18uz);
208 starting |= mask2 & (starting >> 36uz);
220 return east(starting) |
west(starting);
236 if constexpr (Side == Color::White)
237 return north(starting);
239 return south(starting);
245 if constexpr (Side == Color::White)
246 return south(starting);
248 return north(starting);