- ~SimpleHash() { delete [] entries; }
-
- Entry* find(Key key) const { return entries + ((uint32_t)key & (HashSize - 1)); }
-
-protected:
- Entry* entries;
-};
-
-
-/// The TTEntry class is the class of transposition table entries
-///
-/// A TTEntry needs 128 bits to be stored
-///
-/// bit 0-31: key
-/// bit 32-63: data
-/// bit 64-79: value
-/// bit 80-95: depth
-/// bit 96-111: static value
-/// bit 112-127: margin of static value
-///
-/// the 32 bits of the data field are so defined
-///
-/// bit 0-15: move
-/// bit 16-20: not used
-/// bit 21-22: value type
-/// bit 23-31: generation
-
-class TTEntry {
-
-public:
- void save(uint32_t k, Value v, ValueType t, Depth d, Move m, int g, Value statV, Value kd) {
-
- key32 = k;
- data = (m & 0xFFFF) | (t << 21) | (g << 23);
- value16 = (int16_t)v;
- depth16 = (int16_t)d;
- staticValue = (int16_t)statV;
- staticValueMargin = (int16_t)kd;
- }
- void set_generation(int g) { data = move() | (type() << 21) | (g << 23); }
-
- uint32_t key() const { return key32; }
- Depth depth() const { return Depth(depth16); }
- Move move() const { return Move(data & 0xFFFF); }
- Value value() const { return Value(value16); }
- ValueType type() const { return ValueType((data >> 21) & 3); }
- int generation() const { return data >> 23; }
- Value static_value() const { return Value(staticValue); }
- Value static_value_margin() const { return Value(staticValueMargin); }
-