#include <iostream>
#include <algorithm>
#include <array>
+#include <bitset>
#include <type_traits>
#include "../nnue_common.h"
#include "affine_transform.h"
alignas(CacheLineSize) static inline const std::array<unsigned, 256> lookup_count = [](){
std::array<unsigned, 256> v;
for (int i = 0; i < 256; ++i)
- {
- int j = i;
- int k = 0;
- while(j)
- {
- j &= j - 1;
- ++k;
- }
- v[i] = k;
- }
+ v[i] = unsigned(std::bitset<8>(i).count());
return v;
}();
std::string fen() const;
// Position representation
- Bitboard pieces(PieceType pt) const;
+ Bitboard pieces(PieceType pt = ALL_PIECES) const;
template<typename ...PieceTypes> Bitboard pieces(PieceType pt, PieceTypes... pts) const;
Bitboard pieces(Color c) const;
template<typename ...PieceTypes> Bitboard pieces(Color c, PieceTypes... pts) const;
return piece_on(from_sq(m));
}
-inline Bitboard Position::pieces(PieceType pt = ALL_PIECES) const {
+inline Bitboard Position::pieces(PieceType pt) const {
return byTypeBB[pt];
}