All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
moveSignature.h
Go to the documentation of this file.
1 #ifndef _MOVE_SIGNATURE_H
2 #define _MOVE_SIGNATURE_H
3 #include "osl/misc/carray.h"
4 #include "osl/ptype.h"
5 #include "osl/ptypeTraits.h"
6 #include <iosfwd>
7 
8 namespace osl
9 {
10  namespace effect
11  {
16  // enumにするとsizeof(MoveSignature)が1にならない可能性があるので
17  typedef unsigned char MoveSignature;
18  const int MS_PLAYER=(1<<7);
19  const int MS_LONG_U=(1<<5);
20  const int MS_U=(1<<4);
21  const int MS_UL_UR=(1<<3);
22  const int MS_L_R_D=(1<<2);
23  const int MS_DL_DR=(1<<1);
24  const int MS_UUL_UUR=(1<<0);
25 
26  template<Player P>
28 
29  template<>
30  inline MoveSignature getPlayerMask<BLACK>(){ return 0; }
31 
32  template<>
34 
35  std::ostream& operator<<(std::ostream& os,const MoveSignature signature);
36 
37  template<Ptype T>
39  static const MoveSignature signature=
46  };
47 
50 
55  CArray<MoveSignature,PTYPEO_SIZE> signatures;
56  private:
57  template<Ptype T>
58  void setSignature();
59  template<Ptype T>
60  void setSignatures(Int2Type<T>);
61  public:
64  assert(isValidPtypeO(ptypeo));
65  return signatures[static_cast<int>(ptypeo)-PTYPEO_MIN];
66  }
67  };
68  extern const MoveSignatureTable Move_Signature_Table;
69  } // namespace effect
70 } // namespace osl
71 #endif // _MOVE_SIGNATURE_H
72 // ;;; Local Variables:
73 // ;;; mode:c++
74 // ;;; c-basic-offset:2
75 // ;;; End: