#if !defined(TT_H_INCLUDED)
#define TT_H_INCLUDED
-#include <iostream>
-
#include "misc.h"
#include "types.h"
-
/// The TTEntry is the class of transposition table entries
///
/// A TTEntry needs 128 bits to be stored
public:
TranspositionTable();
- ~TranspositionTable();
+ ~TranspositionTable();
void set_size(size_t mbSize);
void clear();
- void store(const Key posKey, Value v, Bound type, Depth d, Move m, Value statV, Value kingD);
- TTEntry* probe(const Key posKey) const;
+ void store(const Key key, Value v, Bound type, Depth d, Move m, Value statV, Value kingD);
+ TTEntry* probe(const Key key) const;
void new_search();
TTEntry* first_entry(const Key posKey) const;
void refresh(const TTEntry* tte) const;
const_cast<TTEntry*>(tte)->set_generation(generation);
}
-
-/// A simple hash table used to store pawns and material configurations. It is
-/// basically just an array of Entry objects. Without cluster concept, overwrite
-/// policy nor resizing.
-
-template<class Entry, int HashSize>
-struct HashTable {
-
- typedef HashTable<Entry, HashSize> Base;
-
- HashTable() {
-
- entries = new (std::nothrow) Entry[HashSize];
- if (!entries)
- {
- std::cerr << "Failed to allocate " << HashSize * sizeof(Entry)
- << " bytes for hash table." << std::endl;
- ::exit(EXIT_FAILURE);
- }
- memset(entries, 0, HashSize * sizeof(Entry));
- }
-
- virtual ~HashTable() { delete [] entries; }
-
- Entry* probe(Key key) const { return entries + ((uint32_t)key & (HashSize - 1)); }
- void prefetch(Key key) const { ::prefetch((char*)probe(key)); }
-
-private:
- Entry* entries;
-};
-
#endif // !defined(TT_H_INCLUDED)