immediateCheckmateTable.h
Go to the documentation of this file.
00001 /* immediateCheckmateTable.h
00002  */
00003 #ifndef OSL_CHECKMATE_IMMEDIATE_CHECKMATE_TABLE_H
00004 #define OSL_CHECKMATE_IMMEDIATE_CHECKMATE_TABLE_H
00005 #include "osl/checkmate/king8Info.h"
00006 #include "osl/ptype.h"
00007 #include "osl/direction.h"
00008 #include "osl/misc/carray.h"
00009 #include "osl/misc/carray2d.h"
00010 #include "osl/container/pieceMask.h"
00011 
00012 namespace osl
00013 {
00014   namespace checkmate
00015   {
00016     class ImmediateCheckmateTable
00017     {
00018     private:
00019       CArray<unsigned char,0x10000u> dropPtypeMasks;
00020       CArray2d<unsigned char,0x100u,PTYPE_SIZE> ptypeDropMasks;
00021       CArray2d<unsigned char,PTYPE_SIZE,8> blockingMasks;
00022       CArray2d<unsigned short,PTYPE_SIZE,8> noEffectMasks;
00023     public:
00024       ImmediateCheckmateTable();
00025       unsigned char dropPtypeMaskOf(unsigned int liberty_drop_mask) const
00026       {
00027         return dropPtypeMasks[liberty_drop_mask];
00028       }
00029       unsigned char dropPtypeMask(King8Info canMoveMask) const
00030       {
00031         return dropPtypeMaskOf(canMoveMask.libertyDropMask());
00032       }
00033       unsigned int ptypeDropMask(Ptype ptype,King8Info canMoveMask) const
00034       {
00035         return ptypeDropMasks(canMoveMask.liberty(),ptype);
00036       }
00037       unsigned int blockingMask(Ptype ptype,Direction dir) const
00038       {
00039         assert(static_cast<int>(dir)<8);
00040         return blockingMasks(ptype,dir);
00041       }
00042       unsigned int noEffectMask(Ptype ptype,Direction dir) const
00043       {
00044         assert(static_cast<int>(dir)<8);
00045         return noEffectMasks(ptype,dir);
00046       }
00047     };
00048     extern const ImmediateCheckmateTable Immediate_Checkmate_Table;
00049   }
00050 }
00051 
00052 #endif /* OSL_CHECKMATE_IMMEDIATE_CHECKMATE_TABLE_H */
00053 // ;;; Local Variables:
00054 // ;;; mode:c++
00055 // ;;; c-basic-offset:2
00056 // ;;; End:
00057 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines