Rename class Book to PolyglotBook
authorMarco Costalba <mcostalba@gmail.com>
Sun, 16 Sep 2012 08:30:32 +0000 (10:30 +0200)
committerMarco Costalba <mcostalba@gmail.com>
Sun, 16 Sep 2012 08:32:57 +0000 (10:32 +0200)
And move struct BookEntry out of the header where it is
not needed.

No functional change.

src/book.cpp
src/book.h
src/search.cpp

index 77bdc740a7c0ed294b3c93f97effbd6cfaa19edd..b7237054723a7ab86469309625e21c861e63f2dc 100644 (file)
@@ -35,6 +35,16 @@ using namespace std;
 
 namespace {
 
 
 namespace {
 
+  // A Polyglot book is a series of "entries" of 16 bytes. All integers are
+  // stored in big-endian format, with highest byte first (regardless of size).
+  // The entries are ordered according to the key in ascending order.
+  struct BookEntry {
+    uint64_t key;
+    uint16_t move;
+    uint16_t count;
+    uint32_t learn;
+  };
+
   // Random numbers from PolyGlot, used to compute book hash keys
   const Key PolyGlotRandoms[781] = {
     0x9D39247E33776D41ULL, 0x2AF7398005AAA5C7ULL, 0x44DB015024623547ULL,
   // Random numbers from PolyGlot, used to compute book hash keys
   const Key PolyGlotRandoms[781] = {
     0x9D39247E33776D41ULL, 0x2AF7398005AAA5C7ULL, 0x44DB015024623547ULL,
@@ -338,20 +348,20 @@ namespace {
 
 } // namespace
 
 
 } // namespace
 
-Book::Book() {
+PolyglotBook::PolyglotBook() {
 
   for (int i = Time::now() % 10000; i > 0; i--)
       RKiss.rand<unsigned>(); // Make random number generation less deterministic
 }
 
 
   for (int i = Time::now() % 10000; i > 0; i--)
       RKiss.rand<unsigned>(); // Make random number generation less deterministic
 }
 
-Book::~Book() { if (is_open()) close(); }
+PolyglotBook::~PolyglotBook() { if (is_open()) close(); }
 
 
 
 
-/// Book::operator>>() reads sizeof(T) chars from the file's binary byte stream
-/// and converts them in a number of type T. A Polyglot book stores numbers in
+/// operator>>() reads sizeof(T) chars from the file's binary byte stream and
+/// converts them in a number of type T. A Polyglot book stores numbers in
 /// big-endian format.
 
 /// big-endian format.
 
-template<typename T> Book& Book::operator>>(T& n) {
+template<typename T> PolyglotBook& PolyglotBook::operator>>(T& n) {
 
   n = 0;
   for (size_t i = 0; i < sizeof(T); i++)
 
   n = 0;
   for (size_t i = 0; i < sizeof(T); i++)
@@ -360,15 +370,15 @@ template<typename T> Book& Book::operator>>(T& n) {
   return *this;
 }
 
   return *this;
 }
 
-template<> Book& Book::operator>>(BookEntry& e) {
+template<> PolyglotBook& PolyglotBook::operator>>(BookEntry& e) {
   return *this >> e.key >> e.move >> e.count >> e.learn;
 }
 
 
   return *this >> e.key >> e.move >> e.count >> e.learn;
 }
 
 
-/// Book::open() tries to open a book file with the given name after closing
-/// any exsisting one.
+/// open() tries to open a book file with the given name after closing any
+/// exsisting one.
 
 
-bool Book::open(const char* fName) {
+bool PolyglotBook::open(const char* fName) {
 
   if (is_open()) // Cannot close an already closed file
       close();
 
   if (is_open()) // Cannot close an already closed file
       close();
@@ -381,11 +391,11 @@ bool Book::open(const char* fName) {
 }
 
 
 }
 
 
-/// Book::probe() tries to find a book move for the given position. If no move
-/// is found returns MOVE_NONE. If pickBest is true returns always the highest
+/// probe() tries to find a book move for the given position. If no move is
+/// found returns MOVE_NONE. If pickBest is true returns always the highest
 /// rated move, otherwise randomly chooses one, based on the move score.
 
 /// rated move, otherwise randomly chooses one, based on the move score.
 
-Move Book::probe(const Position& pos, const string& fName, bool pickBest) {
+Move PolyglotBook::probe(const Position& pos, const string& fName, bool pickBest) {
 
   if (fileName != fName && !open(fName.c_str()))
       return MOVE_NONE;
 
   if (fileName != fName && !open(fName.c_str()))
       return MOVE_NONE;
@@ -437,11 +447,11 @@ Move Book::probe(const Position& pos, const string& fName, bool pickBest) {
 }
 
 
 }
 
 
-/// Book::find_first() takes a book key as input, and does a binary search
-/// through the book file for the given key. Returns the index of the leftmost
-/// book entry with the same key as the input.
+/// find_first() takes a book key as input, and does a binary search through
+/// the book file for the given key. Returns the index of the leftmost book
+/// entry with the same key as the input.
 
 
-size_t Book::find_first(uint64_t key) {
+size_t PolyglotBook::find_first(uint64_t key) {
 
   seekg(0, ios::end); // Move pointer to end, so tellg() gets file's size
 
 
   seekg(0, ios::end); // Move pointer to end, so tellg() gets file's size
 
index 9497b9b9b4562ae08b8d752fd9959e5b6c417494..fcbce65b16f55f12802e0d273fe5277078e99a6e 100644 (file)
 #include "position.h"
 #include "rkiss.h"
 
 #include "position.h"
 #include "rkiss.h"
 
-
-/// A Polyglot book is a series of "entries" of 16 bytes. All integers are
-/// stored highest byte first (regardless of size). The entries are ordered
-/// according to key. Lowest key first.
-struct BookEntry {
-  uint64_t key;
-  uint16_t move;
-  uint16_t count;
-  uint32_t learn;
-};
-
-
-class Book : private std::ifstream {
+class PolyglotBook : private std::ifstream {
 public:
 public:
-  Book();
 ~Book();
+  PolyglotBook();
~PolyglotBook();
   Move probe(const Position& pos, const std::string& fName, bool pickBest);
 
 private:
   Move probe(const Position& pos, const std::string& fName, bool pickBest);
 
 private:
-  template<typename T> Book& operator>>(T& n);
+  template<typename T> PolyglotBook& operator>>(T& n);
 
   bool open(const char* fName);
   size_t find_first(uint64_t key);
 
   bool open(const char* fName);
   size_t find_first(uint64_t key);
index eeca97389fad2bf6b63a2a1436a0c18069f9148d..62948590a494c6fc48968abdd0aa3db810006a92 100644 (file)
@@ -224,7 +224,7 @@ size_t Search::perft(Position& pos, Depth depth) {
 
 void Search::think() {
 
 
 void Search::think() {
 
-  static Book book; // Defined static to initialize the PRNG only once
+  static PolyglotBook book; // Defined static to initialize the PRNG only once
 
   Position& pos = RootPosition;
   Chess960 = pos.is_chess960();
 
   Position& pos = RootPosition;
   Chess960 = pos.is_chess960();