11 #include <boost/type_traits.hpp> 
   21     template<
typename Liberty,Player P,Ptype T>
 
   36           getShortMask<PlayerTraits<P>::opponent>(p.
ptype(), from, 
target);
 
   42             getLongEffect<PlayerTraits<P>::opponent>(p.
ptype(),
 
   46           if(offset.zero()) 
return;
 
   48           if(
state.isEmptyBetween(from,
target-offset.blackOffset<P>())){
 
   49             unsigned int nearMaskSpace=
nearMask.spaceMask();
 
   50             unsigned int mask0=longEffect8.
getMask(0);
 
   51             liberty.andMask(NearMask::makeDirect(~mask0));
 
   52             if((mask0&nearMaskSpace)!=0){
 
   53               unsigned int mask1=longEffect8.
getMask(1);
 
   54               liberty.andMask(NearMask::makeDirect(~mask1));
 
   55               if( T!=
BISHOP && (mask1&nearMaskSpace)!=0){
 
   56                 unsigned int mask2=longEffect8.
getMask(2);
 
   57                 liberty.andMask(NearMask::makeDirect(~mask2));
 
   65             getLongEffect2<PlayerTraits<P>::opponent>(p.
square(),
 
   67           unsigned int mask0=longEffect8.
getMask(0);
 
   69           unsigned int nearMaskSpace=
nearMask.spaceMask();
 
   70           liberty.andMask(NearMask::makeDirect(~mask0));
 
   71           if((mask0&nearMaskSpace)==0) 
return;
 
   72           unsigned int mask1=longEffect8.
getMask(1);
 
   73           liberty.andMask(NearMask::makeDirect(~mask1));
 
   83              state.hasEffectTo(p,to))
 
  118         action_t action(*
this,state,target,nearMask);
 
  120           forEachOnBoard<PlayerTraits<P>::opponent,T,action_t>(action);
 
  128       template<Ptype T,
typename Tail>
 
  130         addMaskPtype<T>(state,
target,nearMask);
 
  131         addMask(state,target,nearMask,Tail());
 
  147         for (
int i=0;i<8;i++)
 
  154     std::ostream& operator<<(std::ostream& os,Liberty8<P> 
const& liberty);
 
  158 template<osl::Player P>
 
  165   assert(state.pieceAt(target).template isOnBoardByOwner<P>());
 
  170   NearMask nearMask=NearMask::make<P>(state,
target);
 
  175   mask = NearMask::makeDirect(nearMask.uintValue() & 0xff);