00001 #include "osl/move_generator/escape_.h"
00002 #include "osl/move_generator/escape_.tcc"
00003 #include "osl/move_generator/pieceOnBoard.tcc"
00004 #ifdef NDEBUG
00005 # include "osl/move_generator/capture_.tcc"
00006 #endif
00007 #include "osl/state/numEffectState.h"
00008
00009 void osl::GenerateEscapeKing::generate(const NumEffectState& state, MoveVector& out)
00010 {
00011 typedef move_action::Store store_t;
00012 store_t store(out);
00013 const Piece king =state.getKingPiece(state.getTurn());
00014 move_generator::GenerateEscapeOfTurn::generate(state, king, store);
00015 }
00016
00017 void osl::GenerateEscapeKing::generateCheap(const NumEffectState& state, MoveVector& out)
00018 {
00019 if (state.getTurn() == BLACK)
00020 move_generator::GenerateEscape<BLACK>::generateCheapKingEscape(state, out);
00021 else
00022 move_generator::GenerateEscape<WHITE>::generateCheapKingEscape(state, out);
00023 }
00024
00025 namespace osl
00026 {
00027
00028 namespace move_generator
00029 {
00030 template struct Escape<move_action::Store>;
00031 template void Escape<move_action::Store>::generate<BLACK,true,false>(const NumEffectState& state,Piece piece,move_action::Store& action);
00032 template void Escape<move_action::Store>::generate<WHITE,true,false>(const NumEffectState& state,Piece piece,move_action::Store& action);
00033 template void Escape<move_action::Store>::generateMoves<BLACK,true>(osl::state::NumEffectState const&, osl::Piece, osl::Piece, osl::move_action::Store&);
00034 template void Escape<move_action::Store>::generateMoves<WHITE,true>(osl::state::NumEffectState const&, osl::Piece, osl::Piece, osl::move_action::Store&);
00035 template void Escape<move_action::Store>::generateKingEscape<BLACK, false>(osl::state::NumEffectState const&, osl::move_action::Store&);
00036 template void Escape<move_action::Store>::generateKingEscape<WHITE, false>(osl::state::NumEffectState const&, osl::move_action::Store&);
00037 template void Escape<move_action::Store>::generateKingEscape<BLACK, true>(osl::state::NumEffectState const&, osl::move_action::Store&);
00038 template void Escape<move_action::Store>::generateKingEscape<WHITE, true>(osl::state::NumEffectState const&, osl::move_action::Store&);
00039 template void Escape<move_action::Store>::generateBlockingKing<BLACK,false>(const NumEffectState& state,Piece p,Position from,move_action::Store &action);
00040 template void Escape<move_action::Store>::generateBlockingKing<WHITE,false>(const NumEffectState& state,Piece p,Position from,move_action::Store &action);
00041 }
00042 }
00043
00044
00045
00046