Line data Source code
1 : #include "bitboardTools.hpp"
2 :
3 : #include "logging.hpp"
4 :
5 : namespace BBTools {
6 :
7 5568663 : Square SquareFromBitBoard(const BitBoard& b) {
8 5568663 : assert(isNotEmpty(b));
9 : #ifdef _WIN64
10 : unsigned long i = 0ull;
11 : #else
12 : int i = 0;
13 : #endif
14 : bsf(b, i);
15 5568663 : return static_cast<Square>(i);
16 : }
17 :
18 0 : void clearBitBoards(Position& p) {
19 : p._allB.fill(emptyBitBoard);
20 308 : p.allPieces[Co_White] = p.allPieces[Co_Black] = emptyBitBoard;
21 0 : }
22 :
23 308 : void setBitBoards(Position& p) {
24 : clearBitBoards(p);
25 20020 : for (Square k = 0; k < NbSquare; ++k) {
26 19712 : const Piece pp = p.board_const(k);
27 19712 : if (pp != P_none) {
28 : setBit(p, k, pp);
29 5809 : p.allPieces[pp > 0 ? Co_White : Co_Black] |= SquareToBitboard(k);
30 : }
31 : }
32 308 : }
33 :
34 : } // namespace BBTools
|