All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
ntesukiMove.tcc
Go to the documentation of this file.
1 /* ntesukiMove.tcc
2  */
5 
6 template<osl::Player P>
9 {
10  if (P == osl::BLACK)
12  else
14 };
15 
16 /* private functions to check FLAGS for success/fail
17  */
18 template <osl::Player P>
20 is_success_flag(int pass_left) const
21 {
22  ntesuki_assert(pass_left >= 0 &&
23  pass_left <= 3);
24  if (P == osl::BLACK)
25  return 1 << (IS_SUCCESS_BLACK_SHIFT + pass_left);
26  if (P == osl::WHITE)
27  return 1 << (IS_SUCCESS_WHITE_SHIFT + pass_left);
28 }
29 
30 template <osl::Player P>
32 is_fail_flag(int pass_left) const
33 {
34  ntesuki_assert(pass_left >= 0 &&
35  pass_left <= 3);
36  if (P == osl::BLACK)
37  return 1 << (IS_FAIL_BLACK_SHIFT + pass_left);
38  else
39  return 1 << (IS_FAIL_WHITE_SHIFT + pass_left);
40 }
41 
42 template<osl::Player P>
43 void
45 setCheckmateSuccess(int pass_left)
46 {
47  ntesuki_assert(!(flags & is_success_flag<P>(pass_left)));
48  ntesuki_assert(!(flags & is_fail_flag<P>(pass_left)));
49  flags |= is_success_flag<P>(pass_left);
50 };
51 
52 template<osl::Player P>
54 isCheckmateSuccess(int pass_left) const
55 {
56  return (flags & is_success_flag<P>(pass_left)) == is_success_flag<P>(pass_left);
57 }
58 
59 template<osl::Player P>
61 setCheckmateFail(int pass_left)
62 {
63  ntesuki_assert(!(flags & is_fail_flag<P>(pass_left)));
64  ntesuki_assert(!(flags & is_success_flag<P>(pass_left)));
65  flags |= is_fail_flag<P>(pass_left);
66 };
67 
68 
69 template<osl::Player P>
71 isCheckmateFail(int pass_left) const
72 {
73  return (flags & is_fail_flag<P>(pass_left)) == is_fail_flag<P>(pass_left);
74 }
75 
76 // ;;; Local Variables:
77 // ;;; mode:c++
78 // ;;; c-basic-offset:2
79 // ;;; End: