5 #include <boost/foreach.hpp> 
   11   PieceMask direct = state.effectSetAt(target) & state.piecesOnBoard(attack);
 
   15   direct &= (state.promotedPieces() | mask);
 
   17   while (direct.any()) {
 
   18     const int num = direct.takeOneBit();
 
   21     const int num1=state.longEffectNumTable()[num][d];
 
   22     if(!Piece::isEmptyNum(num1) && state.pieceOf(num1).owner()==attack) 
return true;
 
   27 template <
int count_max>
 
   32   PieceVector direct_pieces;
 
   33   EffectUtil::findEffect(attack, state, target, direct_pieces);
 
   34   return AdditionalOrShadow::count<count_max>
 
   35     (direct_pieces, state, 
target, attack);
 
   42   return count<1>(state, 
target, attack);
 
   49   return count<2>(state, 
target, attack);
 
   54                        const PieceVector& direct_effects,
 
   55                        PieceVector& black, PieceVector& white)
 
   57   BOOST_FOREACH(
Piece p, direct_effects)
 
   65     Piece candidate=state.nextPiece(from, step);
 
   70          candidate=state.nextPiece(candidate.
square(), step))
 
   77         black.push_back(candidate);
 
   79         white.push_back(candidate);
 
   87                      PieceVector& black, PieceVector& white)
 
   89   PieceVector direct_pieces;
 
   90   EffectUtil::findEffect(
BLACK, state, target, direct_pieces);
 
   91   find(state, target, direct_pieces, black, white);
 
   93   direct_pieces.clear();
 
   94   EffectUtil::findEffect(
WHITE, state, target, direct_pieces);
 
   95   find(state, target, direct_pieces, black, white);
 
  100                       int& black, 
int& white)
 
  102   PieceVector black_pieces, white_pieces;
 
  103   find(state, target, black_pieces, white_pieces);
 
  104   black = black_pieces.size();
 
  105   white = white_pieces.size();