]> git.sesse.net Git - stockfish/blobdiff - src/square.h
Retire enum Direction
[stockfish] / src / square.h
index 88ae1363a6943263ead7095487f78b745f35a798..7a59e078fdc7ec4a02a0a7e2068752778a513668 100644 (file)
@@ -58,14 +58,14 @@ enum Rank {
 
 enum SquareDelta {
 
-  DELTA_N = 8, DELTA_E = 1, DELTA_S = -8, DELTA_W = -1,
+  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,
+  DELTA_NW = DELTA_N + DELTA_W
 };
 
 ENABLE_OPERATORS_ON(Square);
@@ -81,6 +81,8 @@ ENABLE_OPERATORS_ON(SquareDelta);
 const int FlipMask = 56;
 const int FlopMask =  7;
 
+extern int8_t DirectionTable[64][64];
+
 
 ////
 //// Inline functions
@@ -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)