4 #include <boost/dynamic_bitset.hpp>
5 #include <boost/foreach.hpp>
19 if ((bit_position & 0xff) == 0)
20 return Square::STAND();
22 return Square((bit_position >> 4) & 0xf, bit_position & 0xf);
71 for (
int i = 0; i < 40; i++)
73 if(state.usedMask().test(i))
74 pieces.push_back(
OPiece(state.pieceOf(i)));
76 std::sort(pieces.begin(), pieces.end(),
opiece_sort());
77 player_to_move = state.turn();
87 BOOST_FOREACH(
const OPiece& p, pieces) {
90 state.setTurn(turn());
105 for (
unsigned int i = 0; i < c.
pieces.size(); i++)
116 assert(c.
pieces.size() == 0);
118 for (
unsigned int i = 0; i < 40; i++)
129 const static size_t ninteger = 41;
130 const static size_t integer_size = 32;
131 const static size_t size = ninteger*integer_size;
133 std::stringstream ss;
137 ss.seekg(0, std::ios::beg);
139 boost::dynamic_bitset<> bits(size);
141 for (
size_t i = 0; i < ninteger; ++i)
143 const unsigned int tmp =
static_cast<unsigned int>(
readInt(ss));
144 const boost::dynamic_bitset<> mask(size, static_cast<unsigned long>(tmp));
145 bits = (bits << integer_size) | mask;
155 std::stringstream ss;
156 assert(bits.size()%32 == 0);
157 const boost::dynamic_bitset<> mask(bits.size(), 4294967295ul);
158 for (
size_t i=0; i<bits.size()/32; ++i)
160 const unsigned long tmp = ((bits >> ((bits.size()/32-1-i)*32)) & mask).to_ulong();
161 writeInt(ss, static_cast<int>(tmp));
165 ss.seekg(0, std::ios::beg);