37 if (wp > 0) s+= (wp +
'0');
44 if (bp > 0) s+= (bp +
'0');
62 if (upromo) {
return true; }
73 if (promos) {
return true; }
108 for (
uint i=0; i < count; i++) {
110 change = (*changeList) >> 4;
113 change = (*changeList) & 15;
117 hpCurrent &= ~(1 << change);
118 if (hpCurrent == hpSig) {
return true; }
124 if ((hpCurrent & hpSig) != hpSig) {
return false; }
142 uint countA = changeListA[0];
143 uint countB = changeListB[0];
146 bool halfByte =
false;
151 uint count = (countA < countB ? countA : countB);
154 for (
uint i=0; i < count; i++) {
156 changeA = *changeListA & 15;
157 changeB = *changeListB & 15;
162 changeA = *changeListA >> 4;
163 changeB = *changeListB >> 4;
166 if (changeA != changeB) {
return false; }
182 bool halfByte =
false;
184 for (
uint i=0; i < count; i++) {
185 if (halfByte ==
false) {
186 change = (*changeList) >> 4;
189 change = (*changeList) & 15;
193 hpSig -= (1 << change);
#define MATSIG_Count_WN(x)
std::string matsig_makeString(matSigT m)
#define MATSIG_Count_BN(x)
#define MATSIG_Count_WR(x)
#define MATSIG_Count_BQ(x)
bool hpSig_PossibleMatch(uint hpSig, const byte *changeList)
#define MATSIG_Count_BR(x)
bool hpSig_Prefix(const byte *changeListA, const byte *changeListB)
const uint HPSIG_StdStart
#define MATSIG_Count_WB(x)
#define MATSIG_Count_WQ(x)
#define MATSIG_Count_WP(x)
#define MATSIG_Count_BP(x)
uint hpSig_Final(const byte *changeList)
#define MATSIG_Count_BB(x)
bool matsig_isReachable(matSigT mStart, matSigT mTarget, bool promos, bool upromo)