- return result;
- }
-
-
- uint64_t book_piece_key(Piece p, Square s) {
- return Random64[RandomPiece + (PieceTo12[int(p)]^1)*64 + int(s)];
- }
-
-
- uint64_t book_castle_key(const Position &pos) {
- uint64_t result = 0ULL;
-
- if(pos.can_castle_kingside(WHITE))
- result ^= Random64[RandomCastle+0];
- if(pos.can_castle_queenside(WHITE))
- result ^= Random64[RandomCastle+1];
- if(pos.can_castle_kingside(BLACK))
- result ^= Random64[RandomCastle+2];
- if(pos.can_castle_queenside(BLACK))
- result ^= Random64[RandomCastle+3];
- return result;
- }
-
-
- uint64_t book_ep_key(const Position &pos) {
- return (pos.ep_square() == SQ_NONE)?
- 0ULL : Random64[RandomEnPassant + square_file(pos.ep_square())];
- }
-
-
- uint64_t book_color_key(const Position &pos) {
- return (pos.side_to_move() == WHITE)? Random64[RandomTurn] : 0ULL;
- }
-
-
- uint16_t read_integer16(std::ifstream& file) {
-
- uint64_t n = read_integer(file, 2);
- assert(n == (uint16_t)n);
- return (uint16_t)n;
- }
-
-
- uint64_t read_integer64(std::ifstream& file) {
-
- return read_integer(file, 8);
- }