// Let's look if we have a specialized evaluation function for this particular
// material configuration. Firstly we look for a fixed configuration one, then
// for a generic one if the previous search failed.
- if (pos.this_thread()->endgames.probe(key, e->evaluationFunction))
+ if ((e->evaluationFunction = pos.this_thread()->endgames.probe<Value>(key)) != nullptr)
return e;
- if (is_KXK<WHITE>(pos))
- {
- e->evaluationFunction = &EvaluateKXK[WHITE];
- return e;
- }
-
- if (is_KXK<BLACK>(pos))
- {
- e->evaluationFunction = &EvaluateKXK[BLACK];
- return e;
- }
+ for (Color c = WHITE; c <= BLACK; ++c)
+ if (is_KXK(pos, c))
+ {
+ e->evaluationFunction = &EvaluateKXK[c];
+ return e;
+ }
// OK, we didn't find any special evaluation function for the current material
// configuration. Is there a suitable specialized scaling function?