move_to(Move(bookMove)), PieceType(p + 1)));
// Verify the book move (if any) is legal
- MoveStack mlist[MOVES_MAX];
+ MoveStack mlist[MAX_MOVES];
MoveStack* last = generate<MV_LEGAL>(pos, mlist);
for (MoveStack* cur = mlist; cur != last; cur++)
if ((int(cur->move) & ~(3 << 14)) == bookMove) // Mask out special flags
}
+/// Book::get_number() reads sizeof(T) chars from the file's binary byte
+/// stream and converts them in a number of type T.
+template<typename T>
+void Book::get_number(T& n) {
+
+ n = 0;
+
+ for (size_t i = 0; i < sizeof(T); i++)
+ n = (n << 8) + (T)bookFile.get();
+}
+
+
/// Book::read_entry() takes an integer index, and returns the BookEntry
/// at the given index in the book file.
bookFile.seekg(idx * sizeof(BookEntry), ios_base::beg);
- *this >> e.key >> e.move >> e.count >> e.learn;
+ get_number(e.key);
+ get_number(e.move);
+ get_number(e.count);
+ get_number(e.learn);
if (!bookFile.good())
{