-class MaterialInfo {
-
- friend class MaterialInfoTable;
-
-public:
- Value mg_value() const;
- Value eg_value() const;
- ScaleFactor scale_factor(const Position& pos, Color c) const;
- int space_weight() const;
- bool specialized_eval_exists() const;
- Value evaluate(const Position& pos) const;
-
-private:
- void clear();
-
- Key key;
- int16_t mgValue;
- int16_t egValue;
- uint8_t factor[2];
- EndgameEvaluationFunctionBase* evaluationFunction;
- EndgameScalingFunctionBase* scalingFunction[2];
- int spaceWeight;
-};
-
-
-/// EndgameFunctions class stores the endgame evaluation functions std::map.
-/// Because STL library is not thread safe even for read access, the maps,
-/// although with identical content, are replicated for each thread. This
-/// is faster then using locks with an unique set of global maps.
-
-class EndgameFunctions;
-
-
-/// The MaterialInfoTable class represents a pawn hash table. It is basically
-/// just an array of MaterialInfo objects and a few methods for accessing these
-/// objects. The most important method is get_material_info, which looks up a
-/// position in the table and returns a pointer to a MaterialInfo object.
-
-class MaterialInfoTable {
-
-public:
- MaterialInfoTable(unsigned numOfEntries);
- ~MaterialInfoTable();
- void clear();
- MaterialInfo* get_material_info(const Position& pos);
-
-private:
- unsigned size;
- MaterialInfo* entries;
- EndgameFunctions* funcs;
-};
-
-
-////
-//// Inline functions
-////