38 #define MAX_TREE_NODES 60 63 for (
uint i=0; i < 8; i++) { tnode->
san[i] = 0; }
103 std::copy(pos->GetBoard(), pos->GetBoard() + 64, board_);
104 toMove_ = pos->GetToMove();
116 return a.time_ < b.time_;
143 if (Cache)
delete [] Cache;
157 if (max_size != CacheSize) {
158 CacheSize = max_size;
159 if (Cache)
delete [] Cache;
160 if (max_size == 0) Cache = NULL;
167 int idx = LookupIndex(pos);
168 if (idx == -1)
return NULL;
169 return &(Cache[idx]);
189 TreeCache::LookupIndex (
Position * pos)
191 for (
uint i=0; i < NumInUse; i++) {
192 if (Cache[i].toMove_ != pos->
GetToMove()) {
continue; }
195 const pieceT* board2 = Cache[i].board_;
198 if (*board != *board2) { found =
false;
break; }
201 Cache[i].time_ = counter_++;
202 return static_cast<int>(i);
217 ASSERT(LookupIndex(pos) == -1);
219 if (NumInUse < CacheSize) {
221 Cache[NumInUse++].set(pos, pTree, filter, counter_++);
227 if (replace == end)
return false;
229 ASSERT(replace->time_ <= counter_);
230 replace->
set(pos, pTree, filter, counter_++);
void set(Position *pos, treeT *tree, Filter *filter, uint32_t time)
uint freq[NUM_RESULT_TYPES]
const uint NUM_RESULT_TYPES
static bool cmpTime(const cachedTreeT &a, const cachedTreeT &b)
const cachedTreeT * Lookup(Position *pos)
const resultT RESULT_Black
void initTreeNode(treeNodeT *tnode)
const resultT RESULT_Draw
const treeT & getTree() const
const pieceT * GetBoard() const
bool Add(Position *pos, treeT *tree, Filter *filter)
void CompressFrom(Filter *filter)
const resultT RESULT_White
errorT restoreFilter(Filter *filter) const
void CacheResize(size_t max_size)
const resultT RESULT_None
errorT UncompressTo(Filter *filter) const