3 #ifndef _QUIESCENCERECORD_H
4 #define _QUIESCENCERECORD_H
60 if (!
operator[](i).isNormal())
68 iterator p =
std::find(begin(), end(), m);
70 std::rotate(begin(), p, p+1);
77 operator[](size++) = m;
78 std::rotate(begin(), begin()+(
int)size-1, begin()+(
int)size);
86 CArray<Move,4> copy = *
this;
89 if (copy[0].isNormal())
90 operator[](size++) = copy[0];
91 for (
size_t i=0; i<v.size() && size<
capacity(); ++i) {
92 assert(v[i].isNormal());
93 if (
std::find(begin(), begin()+(
int)size, v[i]) == begin()+(
int)size)
94 operator[](size++) = v[i];
96 for (
size_t i=1; i<copy.size() && copy[i].isNormal() && size<
capacity(); ++i)
97 if (
std::find(begin(), begin()+(
int)size, copy[i]) == begin()+(int)size)
98 operator[](size++) = copy[i];
133 class SimpleHashRecord;
162 QuiescenceRecordBase::operator=(src);
166 template <Player Turn>
172 assert(Turn == state.turn());
174 const Square king_position = state.kingSquare(
alt(Turn));
185 return sendOffSquare<BLACK>(state);
187 return sendOffSquare<WHITE>(state);
201 checkmate_nodes =
max;
218 threatmate_nodes =
max;
244 assert(value % 2 == 0);
338 void dump(std::ostream&)
const;