void set_size(size_t mbSize);
void clear();
void store(const Key posKey, Value v, ValueType type, Depth d, Move m, Value statV, Value kingD);
- TTEntry* retrieve(const Key posKey) const;
+ TTEntry* probe(const Key posKey) const;
void new_search();
TTEntry* first_entry(const Key posKey) const;
void refresh(const TTEntry* tte) const;
/// Without cluster concept or overwrite policy.
template<class Entry, int HashSize>
-class SimpleHash {
+struct SimpleHash {
- SimpleHash(const SimpleHash&);
- SimpleHash& operator=(const SimpleHash&);
+ typedef SimpleHash<Entry, HashSize> Base;
-public:
- SimpleHash() {
+ void init() {
+
+ if (entries)
+ return;
entries = new (std::nothrow) Entry[HashSize];
if (!entries)
{
std::cerr << "Failed to allocate " << HashSize * sizeof(Entry)
- << " bytes for material hash table." << std::endl;
+ << " bytes for hash table." << std::endl;
exit(EXIT_FAILURE);
}
memset(entries, 0, HashSize * sizeof(Entry));
virtual ~SimpleHash() { delete [] entries; }
- Entry* find(Key key) const { return entries + ((uint32_t)key & (HashSize - 1)); }
- void prefetch(Key key) const { ::prefetch((char*)find(key)); }
+ Entry* probe(Key key) const { return entries + ((uint32_t)key & (HashSize - 1)); }
+ void prefetch(Key key) const { ::prefetch((char*)probe(key)); }
protected:
Entry* entries;