]> git.sesse.net Git - stockfish/blobdiff - src/square.h
Retire enum Direction
[stockfish] / src / square.h
index 4d427e8e1072d5400bf5c89e3aaea15cde0802ef..7a59e078fdc7ec4a02a0a7e2068752778a513668 100644 (file)
@@ -57,11 +57,15 @@ enum Rank {
 };
 
 enum SquareDelta {
-  DELTA_SSW = -021, DELTA_SS = -020, DELTA_SSE = -017, DELTA_SWW = -012,
-  DELTA_SW = -011, DELTA_S = -010, DELTA_SE = -07, DELTA_SEE = -06,
-  DELTA_W = -01, DELTA_ZERO = 0, DELTA_E = 01, DELTA_NWW = 06, DELTA_NW = 07,
-  DELTA_N = 010, DELTA_NE = 011, DELTA_NEE = 012, DELTA_NNW = 017,
-  DELTA_NN = 020, DELTA_NNE = 021
+
+  DELTA_N = 8, DELTA_E = 1, DELTA_S = -8, DELTA_W = -1, DELTA_NONE = 0,
+
+  DELTA_NN = DELTA_N + DELTA_N,
+  DELTA_NE = DELTA_N + DELTA_E,
+  DELTA_SE = DELTA_S + DELTA_E,
+  DELTA_SS = DELTA_S + DELTA_S,
+  DELTA_SW = DELTA_S + DELTA_W,
+  DELTA_NW = DELTA_N + DELTA_W
 };
 
 ENABLE_OPERATORS_ON(Square);
@@ -74,8 +78,10 @@ ENABLE_OPERATORS_ON(SquareDelta);
 //// Constants
 ////
 
-const int FlipMask = 070;
-const int FlopMask = 07;
+const int FlipMask = 56;
+const int FlopMask =  7;
+
+extern int8_t DirectionTable[64][64];
 
 
 ////
@@ -160,10 +166,6 @@ inline char rank_to_char(Rank r) {
   return char(r - RANK_1 + int('1'));
 }
 
-inline Square square_from_string(const std::string& str) {
-  return make_square(file_from_char(str[0]), rank_from_char(str[1]));
-}
-
 inline const std::string square_to_string(Square s) {
   return  std::string(1, file_to_char(square_file(s)))
         + std::string(1, rank_to_char(square_rank(s)));
@@ -181,4 +183,20 @@ inline bool square_is_ok(Square s) {
   return file_is_ok(square_file(s)) && rank_is_ok(square_rank(s));
 }
 
+inline bool squares_aligned(Square s1, Square s2, Square s3) {
+  return   DirectionTable[s1][s2] != DELTA_NONE
+        && abs(DirectionTable[s1][s2]) ==  abs(DirectionTable[s2][s3]);
+}
+
+inline bool direction_is_straight(Square s1, Square s2) {
+  return   abs(DirectionTable[s1][s2]) == DELTA_N
+        || abs(DirectionTable[s1][s2]) == DELTA_E;
+}
+
+////
+//// Prototypes
+////
+
+extern void init_direction_table();
+
 #endif // !defined(SQUARE_H_INCLUDED)