////
#include <cassert>
-#include <cstring>
#include "bitcount.h"
#include "pawns.h"
<< " bytes for pawn hash table." << std::endl;
Application::exit_with_failure();
}
- clear();
}
}
-/// PawnInfoTable::clear() clears the pawn hash table by setting all
-/// entries to 0.
-
-void PawnInfoTable::clear() {
- memset(entries, 0, size * sizeof(PawnInfo));
-}
-
-
/// PawnInfoTable::get_pawn_info() takes a position object as input, computes
/// a PawnInfo object, and returns a pointer to it. The result is also
/// stored in a hash table, so we don't have to recompute everything when
friend class PawnInfoTable;
public:
+ PawnInfo() : key(0) { clear(); }
+
Value mg_value() const;
Value eg_value() const;
Value kingside_storm_value(Color c) const;
Key key;
Bitboard passedPawns;
- Square kingSquares[2];
- int16_t kingShelters[2];
int16_t mgValue, egValue;
int16_t ksStormValue[2], qsStormValue[2];
uint8_t halfOpenFiles[2];
+ Square kingSquares[2];
+ int16_t kingShelters[2];
};
-
/// The PawnInfoTable class represents a pawn hash table. It is basically
/// just an array of PawnInfo objects and a few methods for accessing these
/// objects. The most important method is get_pawn_info, which looks up a
public:
PawnInfoTable(unsigned numOfEntries);
~PawnInfoTable();
- void clear();
PawnInfo* get_pawn_info(const Position& pos);
private: