All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
immediateCheckmateTable.h
Go to the documentation of this file.
1 /* immediateCheckmateTable.h
2  */
3 #ifndef OSL_CHECKMATE_IMMEDIATE_CHECKMATE_TABLE_H
4 #define OSL_CHECKMATE_IMMEDIATE_CHECKMATE_TABLE_H
6 #include "osl/ptype.h"
7 #include "osl/direction.h"
8 #include "osl/misc/carray.h"
9 #include "osl/misc/carray2d.h"
11 
12 namespace osl
13 {
14  namespace checkmate
15  {
17  {
18  private:
19  CArray<unsigned char,0x10000u> dropPtypeMasks;
20  CArray2d<unsigned char,0x100u,PTYPE_SIZE> ptypeDropMasks;
21  CArray2d<unsigned char,PTYPE_SIZE,8> blockingMasks;
22  CArray2d<unsigned short,PTYPE_SIZE,8> noEffectMasks;
23  public:
25  unsigned char dropPtypeMaskOf(unsigned int liberty_drop_mask) const
26  {
27  return dropPtypeMasks[liberty_drop_mask];
28  }
29  unsigned char dropPtypeMask(King8Info canMoveMask) const
30  {
31  return dropPtypeMaskOf(canMoveMask.libertyDropMask());
32  }
33  unsigned int ptypeDropMask(Ptype ptype,King8Info canMoveMask) const
34  {
35  return ptypeDropMasks(canMoveMask.liberty(),ptype);
36  }
37  unsigned int blockingMask(Ptype ptype,Direction dir) const
38  {
39  assert(static_cast<int>(dir)<8);
40  return blockingMasks(ptype,dir);
41  }
42  unsigned int noEffectMask(Ptype ptype,Direction dir) const
43  {
44  assert(static_cast<int>(dir)<8);
45  return noEffectMasks(ptype,dir);
46  }
47  };
49  }
50 }
51 
52 #endif /* OSL_CHECKMATE_IMMEDIATE_CHECKMATE_TABLE_H */
53 // ;;; Local Variables:
54 // ;;; mode:c++
55 // ;;; c-basic-offset:2
56 // ;;; End:
57