]> git.sesse.net Git - stockfish/blobdiff - src/material.h
Move RootColor from Eval to Search
[stockfish] / src / material.h
index c5484c49032395da2e20f248c4a0ab3549d78c72..ba6ad1ea301c386ca30f3d445a0b4a52cdc8539d 100644 (file)
 #define MATERIAL_H_INCLUDED
 
 #include "endgame.h"
+#include "misc.h"
 #include "position.h"
-#include "tt.h"
 #include "types.h"
 
 const int MaterialTableSize = 8192;
 
-/// Game phase
-enum Phase {
-  PHASE_ENDGAME = 0,
-  PHASE_MIDGAME = 128
-};
-
-
 /// MaterialEntry is a class which contains various information about a
 /// material configuration. It contains a material balance evaluation,
 /// a function pointer to a special endgame evaluation function (which in
@@ -46,7 +39,7 @@ enum Phase {
 
 class MaterialEntry {
 
-  friend class MaterialTable;
+  friend struct MaterialTable;
 
 public:
   Score material_value() const;
@@ -70,19 +63,14 @@ private:
 /// The MaterialTable class represents a material hash table. The most important
 /// method is probe(), which returns a pointer to a MaterialEntry object.
 
-class MaterialTable : public HashTable<MaterialEntry, MaterialTableSize> {
-public:
-  MaterialTable() : funcs(new Endgames()) {}
-  ~MaterialTable() { delete funcs; }
+struct MaterialTable {
 
-  MaterialEntry* probe(const Position& pos) const;
+  MaterialEntry* probe(const Position& pos);
   static Phase game_phase(const Position& pos);
+  template<Color Us> static int imbalance(const int pieceCount[][8]);
 
-private:
-  template<Color Us>
-  static int imbalance(const int pieceCount[][8]);
-
-  Endgames* funcs;
+  HashTable<MaterialEntry, MaterialTableSize> entries;
+  Endgames endgames;
 };