]> git.sesse.net Git - stockfish/blobdiff - src/types.h
Small simplification of endgame functions API
[stockfish] / src / types.h
index 8093a713f5148204359b51aa7dd242748e310b44..f85ad9a92c9e2c8be9ff0f718ff5552b8fe8f1c5 100644 (file)
@@ -201,9 +201,10 @@ enum Depth {
 
   ONE_PLY = 2,
 
-  DEPTH_ZERO         =  0 * ONE_PLY,
-  DEPTH_QS_CHECKS    = -1 * ONE_PLY,
-  DEPTH_QS_NO_CHECKS = -2 * ONE_PLY,
+  DEPTH_ZERO          =  0 * ONE_PLY,
+  DEPTH_QS_CHECKS     = -1 * ONE_PLY,
+  DEPTH_QS_NO_CHECKS  = -2 * ONE_PLY,
+  DEPTH_QS_RECAPTURES = -4 * ONE_PLY,
 
   DEPTH_NONE = -127 * ONE_PLY
 };
@@ -251,6 +252,15 @@ enum ScaleFactor {
   SCALE_FACTOR_NONE   = 255
 };
 
+enum CastleRight {
+  CASTLES_NONE = 0,
+  WHITE_OO     = 1,
+  BLACK_OO     = 2,
+  WHITE_OOO    = 4,
+  BLACK_OOO    = 8,
+  ALL_CASTLES  = 15
+};
+
 
 /// Score enum keeps a midgame and an endgame value in a single
 /// integer (enum), first LSB 16 bits are used to store endgame
@@ -336,6 +346,17 @@ const Value RookValueEndgame   = Value(0x4FE);
 const Value QueenValueMidgame  = Value(0x9D9);
 const Value QueenValueEndgame  = Value(0x9FE);
 
+extern const Value PieceValueMidgame[17];
+extern const Value PieceValueEndgame[17];
+
+inline Value piece_value_midgame(Piece p) {
+  return PieceValueMidgame[p];
+}
+
+inline Value piece_value_endgame(Piece p) {
+  return PieceValueEndgame[p];
+}
+
 inline Value value_mate_in(int ply) {
   return VALUE_MATE - ply;
 }
@@ -348,11 +369,11 @@ inline Piece make_piece(Color c, PieceType pt) {
   return Piece((c << 3) | pt);
 }
 
-inline PieceType type_of_piece(Piece p)  {
+inline PieceType piece_type(Piece p)  {
   return PieceType(p & 7);
 }
 
-inline Color color_of_piece(Piece p) {
+inline Color piece_color(Piece p) {
   return Color(p >> 3);
 }
 
@@ -360,18 +381,6 @@ inline Color opposite_color(Color c) {
   return Color(c ^ 1);
 }
 
-inline bool color_is_ok(Color c) {
-  return c == WHITE || c == BLACK;
-}
-
-inline bool piece_type_is_ok(PieceType pt) {
-  return pt >= PAWN && pt <= KING;
-}
-
-inline bool piece_is_ok(Piece p) {
-  return piece_type_is_ok(type_of_piece(p)) && color_is_ok(color_of_piece(p));
-}
-
 inline char piece_type_to_char(PieceType pt) {
   static const char ch[] = " PNBRQK";
   return ch[pt];
@@ -381,6 +390,10 @@ inline Square make_square(File f, Rank r) {
   return Square((r << 3) | f);
 }
 
+inline bool square_is_ok(Square s) {
+  return s >= SQ_A1 && s <= SQ_H8;
+}
+
 inline File square_file(Square s) {
   return File(s & 7);
 }
@@ -430,18 +443,10 @@ inline int square_distance(Square s1, Square s2) {
   return Max(file_distance(s1, s2), rank_distance(s1, s2));
 }
 
-inline File file_from_char(char c) {
-  return File(c - 'a') + FILE_A;
-}
-
 inline char file_to_char(File f) {
   return char(f - FILE_A + int('a'));
 }
 
-inline Rank rank_from_char(char c) {
-  return Rank(c - '1') + RANK_1;
-}
-
 inline char rank_to_char(Rank r) {
   return char(r - RANK_1 + int('1'));
 }
@@ -451,18 +456,6 @@ inline const std::string square_to_string(Square s) {
   return std::string(ch);
 }
 
-inline bool file_is_ok(File f) {
-  return f >= FILE_A && f <= FILE_H;
-}
-
-inline bool rank_is_ok(Rank r) {
-  return r >= RANK_1 && r <= RANK_8;
-}
-
-inline bool square_is_ok(Square s) {
-  return s >= SQ_A1 && s <= SQ_H8;
-}
-
 inline Square pawn_push(Color c) {
   return c == WHITE ? DELTA_N : DELTA_S;
 }