////
/// PawnInfo is a class which contains various information about a pawn
-/// structure. Currently, it only includes a middle game and an end game
-/// pawn structure evaluation, and a bitboard of passed pawns. We may want
-/// to add further information in the future. A lookup to the pawn hash table
+/// structure. Currently, it only includes a middle game and an end game
+/// pawn structure evaluation, and a bitboard of passed pawns. We may want
+/// to add further information in the future. A lookup to the pawn hash table
/// (performed by calling the get_pawn_info method in a PawnInfoTable object)
/// returns a pointer to a PawnInfo object.
class Position;
friend class PawnInfoTable;
public:
+ PawnInfo() : key(0) { clear(); }
+
Value mg_value() const;
Value eg_value() const;
Value kingside_storm_value(Color c) const;
void setKingShelter(Color c, Square ksq, int value);
private:
- void clear();
+ inline void clear();
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: