uint64_t book_key(const Position& pos) {
uint64_t key = 0;
- Bitboard b = pos.occupied_squares();
+ Bitboard b = pos.pieces();
while (b)
{
Book::Book() : size(0) {
- for (int i = abs(system_time() % 10000); i > 0; i--)
+ for (int i = Time::current_time().msec() % 10000; i > 0; i--)
RKiss.rand<unsigned>(); // Make random number generation less deterministic
}
return false; // Silently fail if the file is not found
// Get the book size in number of entries, we are already at the end of file
- size = tellg() / sizeof(BookEntry);
+ size = (size_t)tellg() / sizeof(BookEntry);
if (!good())
{
void Book::binary_search(uint64_t key) {
- size_t left, right, mid;
+ size_t low, high, mid;
BookEntry e;
- left = 0;
- right = size - 1;
+ low = 0;
+ high = size - 1;
- assert(left <= right);
+ assert(low <= high);
- while (left < right && good())
+ while (low < high && good())
{
- mid = (left + right) / 2;
+ mid = (low + high) / 2;
- assert(mid >= left && mid < right);
+ assert(mid >= low && mid < high);
seekg(mid * sizeof(BookEntry), ios_base::beg);
*this >> e;
if (key <= e.key)
- right = mid;
+ high = mid;
else
- left = mid + 1;
+ low = mid + 1;
}
- assert(left == right);
+ assert(low == high);
- seekg(left * sizeof(BookEntry), ios_base::beg);
+ seekg(low * sizeof(BookEntry), ios_base::beg);
}