Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 12 additions & 5 deletions .clang-format
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,19 @@ AlignEscapedNewlines: LeftWithLastLine
AlignOperands: AlignAfterOperator
AlignTrailingComments: true
AllowAllParametersOfDeclarationOnNextLine: true
AllowAllArgumentsOnNextLine: true
AllowShortCaseLabelsOnASingleLine: false
AllowShortEnumsOnASingleLine: false
AllowShortIfStatementsOnASingleLine: Never
AllowShortLoopsOnASingleLine: false
AllowShortFunctionsOnASingleLine: None
AllowShortLambdasOnASingleLine: None
AllowShortFunctionsOnASingleLine: Inline
AllowShortLambdasOnASingleLine: All
AlwaysBreakTemplateDeclarations: Yes

BasedOnStyle: WebKit
BitFieldColonSpacing: After
BinPackParameters: false
BinPackParameters: true
BinPackArguments: true
BreakBeforeBinaryOperators: NonAssignment
BreakBeforeBraces: Custom
BraceWrapping:
Expand All @@ -31,19 +34,24 @@ BraceWrapping:
BreakBeforeTernaryOperators: true
BreakConstructorInitializers: AfterColon
BreakStringLiterals: false
ColumnLimit: 100

ColumnLimit: 120
ContinuationIndentWidth: 2
Cpp11BracedListStyle: true

IndentAccessModifiers: false
IndentGotoLabels: false
IndentPPDirectives: BeforeHash
IndentWidth: 4
InsertBraces: true
InsertTrailingCommas: None
InsertNewlineAtEOF: true

MaxEmptyLinesToKeep: 2
NamespaceIndentation: None
PackConstructorInitializers: Never
ReflowComments: false

SortIncludes: CaseInsensitive
SortUsingDeclarations: false
SpaceAfterTemplateKeyword: false
Expand All @@ -52,4 +60,3 @@ SpaceBeforeCpp11BracedList: false
SpaceBeforeInheritanceColon: true
SpaceInEmptyBlock: false
SpacesBeforeTrailingComments: 2
InsertNewlineAtEOF: true
3 changes: 1 addition & 2 deletions src/bench.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,6 @@ void benchmark(Search::Searcher& searcher, Depth depth) {

dbg_print();

std::cout << nodes << " nodes " << time::nps(nodes, end_time - start_time) << " nps"
<< std::endl;
std::cout << nodes << " nodes " << time::nps(nodes, end_time - start_time) << " nps" << std::endl;
}
} // namespace Clockwork::Bench
94 changes: 24 additions & 70 deletions src/bitboard.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,9 @@ struct Bitboard {
constexpr Bitboard() = default;

constexpr explicit Bitboard(u64 raw) :
m_raw(raw) {
}
m_raw(raw) {}

static constexpr Bitboard from_square(Square sq) {
return Bitboard{static_cast<u64>(1) << sq.raw};
}
static constexpr Bitboard from_square(Square sq) { return Bitboard{static_cast<u64>(1) << sq.raw}; }

static constexpr Bitboard squares_of_color(Color c) {
return c == Color::White ? Bitboard{0x55AA55AA55AA55AA} : Bitboard{0xAA55AA55AA55AA55};
Expand All @@ -47,9 +44,7 @@ struct Bitboard {
return Bitboard{static_cast<u64>(0xFF) << (8 * rank)};
}

static constexpr Bitboard central_files() {
return file_mask(2) | file_mask(3) | file_mask(4) | file_mask(5);
}
static constexpr Bitboard central_files() { return file_mask(2) | file_mask(3) | file_mask(4) | file_mask(5); }

[[nodiscard]] static Bitboard fill_verticals(const Bitboard mask) {
Bitboard result = mask | (mask >> 8);
Expand All @@ -58,25 +53,15 @@ struct Bitboard {
return (result & Bitboard::rank_mask(0)) * Bitboard::file_mask(0);
}

[[nodiscard]] bool empty() const {
return m_raw == 0;
}
[[nodiscard]] bool empty() const { return m_raw == 0; }

[[nodiscard]] usize popcount() const {
return static_cast<usize>(std::popcount(m_raw));
}
[[nodiscard]] usize popcount() const { return static_cast<usize>(std::popcount(m_raw)); }

[[nodiscard]] i32 ipopcount() const {
return static_cast<i32>(std::popcount(m_raw));
}
[[nodiscard]] i32 ipopcount() const { return static_cast<i32>(std::popcount(m_raw)); }

[[nodiscard]] Square msb() const {
return Square{static_cast<u8>(std::countl_zero(m_raw))};
}
[[nodiscard]] Square msb() const { return Square{static_cast<u8>(std::countl_zero(m_raw))}; }

[[nodiscard]] Square lsb() const {
return Square{static_cast<u8>(std::countr_zero(m_raw))};
}
[[nodiscard]] Square lsb() const { return Square{static_cast<u8>(std::countr_zero(m_raw))}; }

// Rank closest to player
[[nodiscard]] u8 front_rank(Color color) const {
Expand Down Expand Up @@ -125,21 +110,13 @@ struct Bitboard {
return result;
}

[[nodiscard]] u64 value() const {
return m_raw;
}
[[nodiscard]] u64 value() const { return m_raw; }

[[nodiscard]] bool is_set(Square sq) const {
return (m_raw >> sq.raw) & 1;
}
[[nodiscard]] bool is_set(Square sq) const { return (m_raw >> sq.raw) & 1; }

void clear(Square sq) {
m_raw &= ~from_square(sq).m_raw;
}
void clear(Square sq) { m_raw &= ~from_square(sq).m_raw; }

void set(Square sq) {
m_raw |= from_square(sq).m_raw;
}
void set(Square sq) { m_raw |= from_square(sq).m_raw; }

void set(Square sq, bool value) {
if (value) {
Expand All @@ -156,59 +133,36 @@ struct Bitboard {
return *this;
}

Square operator*() const {
return Square{static_cast<u8>(std::countr_zero(m_bb))};
}
Square operator*() const { return Square{static_cast<u8>(std::countr_zero(m_bb))}; }

bool operator==(const Iterator&) const = default;

private:
friend struct Bitboard;

explicit constexpr Iterator(u64 bb) :
m_bb(bb) {
}
m_bb(bb) {}

u64 m_bb;
};

[[nodiscard]] Iterator begin() const {
return Iterator{m_raw};
}
[[nodiscard]] Iterator begin() const { return Iterator{m_raw}; }

[[nodiscard]] Iterator end() const {
return Iterator{0};
}
[[nodiscard]] Iterator end() const { return Iterator{0}; }

bool operator==(const Bitboard&) const = default;

friend constexpr Bitboard operator~(Bitboard a) {
return Bitboard{~a.m_raw};
}
friend constexpr Bitboard operator&(Bitboard a, Bitboard b) {
return Bitboard{a.m_raw & b.m_raw};
}
friend constexpr Bitboard operator|(Bitboard a, Bitboard b) {
return Bitboard{a.m_raw | b.m_raw};
}
friend constexpr Bitboard operator~(Bitboard a) { return Bitboard{~a.m_raw}; }
friend constexpr Bitboard operator&(Bitboard a, Bitboard b) { return Bitboard{a.m_raw & b.m_raw}; }
friend constexpr Bitboard operator|(Bitboard a, Bitboard b) { return Bitboard{a.m_raw | b.m_raw}; }

friend constexpr Bitboard operator*(Bitboard a, Bitboard b) {
return Bitboard{a.m_raw * b.m_raw};
}
friend constexpr Bitboard operator*(Bitboard a, Bitboard b) { return Bitboard{a.m_raw * b.m_raw}; }

friend constexpr Bitboard operator>>(Bitboard a, i32 shift) {
return Bitboard{a.m_raw >> shift};
}
friend constexpr Bitboard operator<<(Bitboard a, i32 shift) {
return Bitboard{a.m_raw << shift};
}
friend constexpr Bitboard operator>>(Bitboard a, i32 shift) { return Bitboard{a.m_raw >> shift}; }
friend constexpr Bitboard operator<<(Bitboard a, i32 shift) { return Bitboard{a.m_raw << shift}; }

friend constexpr Bitboard& operator&=(Bitboard& a, Bitboard b) {
return a = a & b;
}
friend constexpr Bitboard& operator|=(Bitboard& a, Bitboard b) {
return a = a | b;
}
friend constexpr Bitboard& operator&=(Bitboard& a, Bitboard b) { return a = a & b; }
friend constexpr Bitboard& operator|=(Bitboard& a, Bitboard b) { return a = a | b; }

private:
u64 m_raw = 0;
Expand Down
Loading
Loading