3 #ifndef OSL_MOVE_CLASSIFIER_PAWNDROPCHECKMATE_H 
    4 #define OSL_MOVE_CLASSIFIER_PAWNDROPCHECKMATE_H 
   11   namespace move_classifier
 
   26       static bool escape7(
const NumEffectState& state, 
 
   28       static bool isMember(
const NumEffectState& state, 
 
   37         const Piece king = state.template kingPiece<Opponent>();
 
   44         if (! state.hasEffectAt(P, to))
 
   46         if (
King8Info(state.Iking8Info(Opponent)).liberty() != 0)
 
   49         if (EffectUtil::template safeCaptureNotByKing<Opponent>
 
   54         return escape7(state, king_position, to);
 
   60 template <osl::Player P>
 
   72   const Piece p = state.pieceAt(target);
 
   78   if (! state.template hasEffectAt<P>(target, attacker))
 
   80   if (attacker == Piece::EMPTY())
 
   82   assert(attacker.
owner() == P);
 
   89   if (shortOffset.zero())
 
   96 template <osl::Player P>
 
  105   if (canEscape(state, king_position, 
UL, to))
 
  107   if (canEscape(state, king_position, 
UR, to))
 
  109   if (canEscape(state, king_position, 
L, to))
 
  111   if (canEscape(state, king_position, 
R, to))
 
  113   if (canEscape(state, king_position, 
DL, to))
 
  115   if (canEscape(state, king_position, 
D, to))
 
  117   if (canEscape(state, king_position, 
DR, to))