4 #include <boost/dynamic_bitset.hpp>
63 for (
int i = 0; i < 40; ++i)
117 for (PawnArray::const_iterator p =
pawn_pieces.begin();
123 state.
setPiece(p->getOwner(), p->getSquare(), ptype);
125 for (LanceArray::const_iterator p =
lance_pieces.begin();
131 state.
setPiece(p->getOwner(), p->getSquare(), ptype);
139 state.
setPiece(p->getOwner(), p->getSquare(), ptype);
147 state.
setPiece(p->getOwner(), p->getSquare(), ptype);
155 state.
setPiece(p->getOwner(), p->getSquare(), ptype);
157 for (RookArray::const_iterator p =
rook_pieces.begin();
163 state.
setPiece(p->getOwner(), p->getSquare(), ptype);
165 for (GoldArray::const_iterator p =
gold_pieces.begin();
177 boost::dynamic_bitset<>
182 for (PawnArray::const_iterator p =
pawn_pieces.begin();
185 const int value =
static_cast<int>(*p);
186 const boost::dynamic_bitset<> mask(
total_bits,
static_cast<unsigned long>(value));
189 for (LanceArray::const_iterator p =
lance_pieces.begin();
192 const int value =
static_cast<int>(*p);
193 const boost::dynamic_bitset<> mask(
total_bits,
static_cast<unsigned long>(value));
199 const int value =
static_cast<int>(*p);
200 const boost::dynamic_bitset<> mask(
total_bits,
static_cast<unsigned long>(value));
206 const int value =
static_cast<int>(*p);
207 const boost::dynamic_bitset<> mask(
total_bits,
static_cast<unsigned long>(value));
213 const int value =
static_cast<int>(*p);
214 const boost::dynamic_bitset<> mask(
total_bits,
static_cast<unsigned long>(value));
217 for (RookArray::const_iterator p =
rook_pieces.begin();
220 const int value =
static_cast<int>(*p);
221 const boost::dynamic_bitset<> mask(
total_bits,
static_cast<unsigned long>(value));
224 for (GoldArray::const_iterator p =
gold_pieces.begin();
227 const int value =
static_cast<int>(*p);
228 const boost::dynamic_bitset<> mask(
total_bits,
static_cast<unsigned long>(value));
234 const char value =
static_cast<char>(*p);
235 const boost::dynamic_bitset<> mask(
total_bits,
static_cast<unsigned long>(value));
236 bits = bits << 8 | mask;
239 unsigned long value = 0;
244 const boost::dynamic_bitset<> mask(
total_bits,
static_cast<unsigned long>(value));
245 bits = bits << 8 | mask;
253 const boost::dynamic_bitset<> bits =
toBits();
260 if (bits.size() == 0)
264 for (
int i=0; i<18; ++i)
267 const unsigned long value =
270 const OPSquare p(
static_cast<int>(value));
273 for (
int i=0; i<4; ++i)
276 const unsigned long value =
279 const OPSquare p(
static_cast<int>(value));
282 for (
int i=0; i<4; ++i)
285 const unsigned long value =
288 const OPSquare p(
static_cast<int>(value));
291 for (
int i=0; i<4; ++i)
294 const unsigned long value =
297 const OPSquare p(
static_cast<int>(value));
300 for (
int i=0; i<2; ++i)
303 const unsigned long value =
306 const OPSquare p(
static_cast<int>(value));
309 for (
int i=0; i<2; ++i)
312 const unsigned long value =
315 const OPSquare p(
static_cast<int>(value));
318 for (
int i=0; i<4; ++i)
321 const unsigned long value =
323 const OSquare p(
static_cast<int>(value));
326 for (
int i=0; i<2; ++i)
329 const unsigned long value =
334 const unsigned long value = (bits & mask).to_ulong();