[BitBoard] Add fills and direction methods
This commit is contained in:
41
BitBoard.h
41
BitBoard.h
@@ -82,8 +82,18 @@ public:
|
||||
constexpr void clear(unsigned i);
|
||||
constexpr void set(unsigned i);
|
||||
|
||||
BitBoard left(unsigned i) const;
|
||||
BitBoard right(unsigned i) const;
|
||||
BitBoard north() const;
|
||||
BitBoard northEast() const;
|
||||
BitBoard northWest() const;
|
||||
BitBoard east() const;
|
||||
BitBoard south() const;
|
||||
BitBoard southEast() const;
|
||||
BitBoard southWest() const;
|
||||
BitBoard west() const;
|
||||
|
||||
BitBoard northFill() const;
|
||||
BitBoard southFill() const;
|
||||
BitBoard fileFill() const;
|
||||
|
||||
static BitBoard fromIndex(unsigned i);
|
||||
|
||||
@@ -215,11 +225,30 @@ constexpr void BitBoard::clear(const unsigned i) {
|
||||
inline BitBoard BitBoard::fromIndex(const unsigned i) {
|
||||
return 1ULL << i;
|
||||
}
|
||||
inline BitBoard BitBoard::left(const unsigned int i) const {
|
||||
return (mBoard >> i);
|
||||
|
||||
inline BitBoard BitBoard::north() const {
|
||||
return (mBoard << 8);
|
||||
}
|
||||
inline BitBoard BitBoard::right(const unsigned int i) const {
|
||||
return (mBoard << i);
|
||||
inline BitBoard BitBoard::northEast() const {
|
||||
return (mBoard << 9) & ~AFile;
|
||||
}
|
||||
inline BitBoard BitBoard::northWest() const {
|
||||
return (mBoard << 7) & ~HFile;
|
||||
}
|
||||
inline BitBoard BitBoard::west() const {
|
||||
return (mBoard >> 1) & ~HFile;
|
||||
}
|
||||
inline BitBoard BitBoard::east() const {
|
||||
return (mBoard << 1) & ~AFile;
|
||||
}
|
||||
inline BitBoard BitBoard::south() const {
|
||||
return (mBoard >> 8);
|
||||
}
|
||||
inline BitBoard BitBoard::southEast() const {
|
||||
return (mBoard >> 7) & ~AFile;
|
||||
}
|
||||
inline BitBoard BitBoard::southWest() const {
|
||||
return (mBoard >> 9) & ~HFile;
|
||||
}
|
||||
inline int BitBoard::lsb() const {
|
||||
return __builtin_ctzll(mBoard);
|
||||
|
Reference in New Issue
Block a user