All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
escape_.cc
Go to the documentation of this file.
4 #ifdef NDEBUG
6 #endif
8 
9 void osl::GenerateEscapeKing::generate(const NumEffectState& state, MoveVector& out)
10 {
11  const size_t first = out.size();
12  {
14  store_t store(out);
15  const Piece king =state.kingPiece(state.turn());
17  }
18  MoveVector unpromote_moves;
19  const size_t last = out.size();
20  for (size_t i=first; i<last; ++i)
21  {
22  if(out[i].hasIgnoredUnpromote())
23  unpromote_moves.push_back(out[i].unpromote());
24  }
25  out.push_back(unpromote_moves.begin(), unpromote_moves.end());
26 }
27 
28 void osl::GenerateEscapeKing::generateCheap(const NumEffectState& state, MoveVector& out)
29 {
30  if (state.turn() == BLACK)
32  else
34 }
35 
36 namespace osl
37 {
38  // explicit template instantiation
39  namespace move_generator
40  {
41  template class Escape<move_action::Store>;
42  template void Escape<move_action::Store>::generate<BLACK,true,false>(const NumEffectState& state,Piece piece,move_action::Store& action);
43  template void Escape<move_action::Store>::generate<WHITE,true,false>(const NumEffectState& state,Piece piece,move_action::Store& action);
44  template void Escape<move_action::Store>::generateMoves<BLACK,true>(osl::state::NumEffectState const&, osl::Piece, osl::Piece, osl::move_action::Store&);
45  template void Escape<move_action::Store>::generateMoves<WHITE,true>(osl::state::NumEffectState const&, osl::Piece, osl::Piece, osl::move_action::Store&);
46  template void Escape<move_action::Store>::generateKingEscape<BLACK, false>(osl::state::NumEffectState const&, osl::move_action::Store&);
47  template void Escape<move_action::Store>::generateKingEscape<WHITE, false>(osl::state::NumEffectState const&, osl::move_action::Store&);
48  template void Escape<move_action::Store>::generateKingEscape<BLACK, true>(osl::state::NumEffectState const&, osl::move_action::Store&);
49  template void Escape<move_action::Store>::generateKingEscape<WHITE, true>(osl::state::NumEffectState const&, osl::move_action::Store&);
50  template void Escape<move_action::Store>::generateBlockingKing<BLACK,false>(const NumEffectState&,Piece,Square,move_action::Store&);
51  template void Escape<move_action::Store>::generateBlockingKing<WHITE,false>(const NumEffectState&,Piece,Square,move_action::Store&);
52  template void Escape<move_action::Store>::generateBlocking<BLACK,true>(const NumEffectState&,Piece,Square,Square,move_action::Store&);
53  template void Escape<move_action::Store>::generateBlocking<WHITE,true>(const NumEffectState&,Piece,Square,Square,move_action::Store&);
54  } // namespace move_generator
55 } // namespace osl
56 // ;;; Local Variables:
57 // ;;; mode:c++
58 // ;;; c-basic-offset:2
59 // ;;; End: