Go to the documentation of this file. 1 #ifndef OSL_PTYPE_LIST_H
2 #define OSL_PTYPE_LIST_H
7 #include <boost/static_assert.hpp>
15 static void show(std::ostream& os);
18 template<Ptype T,
class U>
31 template<Ptype T,
class U>
37 template<Ptype T,
class U>
43 static void show(std::ostream& os);
47 #define PTYPELIST_1(T1) PtypeList<T1,NullPtype>
48 #define PTYPELIST_2(T1,T2) PtypeList<T1,PTYPELIST_1(T2) >
49 #define PTYPELIST_3(T1,T2,T3) PtypeList<T1,PTYPELIST_2(T2,T3) >
50 #define PTYPELIST_4(T1,T2,T3,T4) PtypeList<T1,PTYPELIST_3(T2,T3,T4) >
51 #define PTYPELIST_5(T1,T2,T3,T4,T5) PtypeList<T1,PTYPELIST_4(T2,T3,T4,T5) >
52 #define PTYPELIST_6(T1,T2,T3,T4,T5,T6)\
53 PtypeList<T1,PTYPELIST_5(T2,T3,T4,T5,T6) >
54 #define PTYPELIST_7(T1,T2,T3,T4,T5,T6,T7)\
55 PtypeList<T1,PTYPELIST_6(T2,T3,T4,T5,T6,T7) >
56 #define PTYPELIST_8(T1,T2,T3,T4,T5,T6,T7,T8)\
57 PtypeList<T1,PTYPELIST_7(T2,T3,T4,T5,T6,T7,T8) >
58 #define PTYPELIST_9(T1,T2,T3,T4,T5,T6,T7,T8,T9)\
59 PtypeList<T1,PTYPELIST_8(T2,T3,T4,T5,T6,T7,T8,T9) >
60 #define PTYPELIST_10(T1,T2,T3,T4,T5,T6,T7,T8,T9,T10)\
61 PtypeList<T1,PTYPELIST_9(T2,T3,T4,T5,T6,T7,T8,T9,T10) >
62 #define PTYPELIST_11(T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11)\
63 PtypeList<T1,PTYPELIST_10(T2,T3,T4,T5,T6,T7,T8,T9,T10,T11) >
64 #define PTYPELIST_12(T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12)\
65 PtypeList<T1,PTYPELIST_11(T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12) >
66 #define PTYPELIST_13(T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13)\
67 PtypeList<T1,PTYPELIST_12(T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13) >
68 #define PTYPELIST_14(T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14)\
69 PtypeList<T1,PTYPELIST_13(T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14) >
70 #define PTYPELIST_15(T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15)\
71 PtypeList<T1,PTYPELIST_14(T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15) >
72 #define PTYPELIST_16(T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16)\
73 PtypeList<T1,PTYPELIST_15(T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16) >
75 typedef PTYPELIST_16(
PTYPE_EMPTY,
PTYPE_EDGE,
PPAWN,
PLANCE,
PKNIGHT,
PSILVER,
PBISHOP,
PROOK,
GOLD,
KING,
PAWN,
LANCE,
KNIGHT,
SILVER,
BISHOP,
ROOK) PtypeListAll;
81 template<class PTList,
Ptype T>
86 static const bool value=
false;
91 template<Ptype T1,Ptype T2,
class U>
95 template<Ptype T1,Ptype T2,
class U>
98 template<Ptype T,
class U>
100 static const bool value=
true;
102 template<Ptype T,
class U>
108 template<
class PTList,
class CheckPtype>
struct Filter;
110 template<
class CheckPtype>
117 template<Ptype T,
class U,
class CheckPtype>
122 template<Ptype T,
class U,
class CheckPtype>
127 template<Ptype T,
class U,
class CheckPtype >
146 template<
unsigned int moveMask>