version 1.4.63b
[polyglot.git] / piece.c
diff --git a/piece.c b/piece.c
index 82ed76a..f5facf9 100644 (file)
--- a/piece.c
+++ b/piece.c
-\r
-// piece.c\r
-\r
-// includes\r
-\r
-#include <string.h>\r
-\r
-#include "colour.h"\r
-#include "piece.h"\r
-#include "util.h"\r
-\r
-// "constants"\r
-\r
-static const uint8 MakePawn[ColourNb] = { PieceNone256, BlackPawn256, WhitePawn256 }; // -BW\r
-\r
-static const uint8 PieceFrom12[12] = {\r
-   BlackPawn256,   WhitePawn256,\r
-   BlackKnight256, WhiteKnight256,\r
-   BlackBishop256, WhiteBishop256,\r
-   BlackRook256,   WhiteRook256,\r
-   BlackQueen256,  WhiteQueen256,\r
-   BlackKing256,   WhiteKing256,\r
-};\r
-\r
-static const char PieceString[12+1] = "pPnNbBrRqQkK";\r
-\r
-// variables\r
-\r
-static sint8 PieceTo12[256];\r
-\r
-// functions\r
-\r
-// piece_init()\r
-\r
-void piece_init() {\r
-\r
-   int piece;\r
-\r
-   for (piece = 0; piece < 256; piece++) PieceTo12[piece] = -1;\r
-\r
-   for (piece = 0; piece < 12; piece++) {\r
-      PieceTo12[PieceFrom12[piece]] = piece;\r
-   }\r
-}\r
-\r
-// piece_is_ok()\r
-\r
-bool piece_is_ok(int piece) {\r
-\r
-   if (piece < 0 || piece >= 256) return FALSE;\r
-\r
-   if (PieceTo12[piece] < 0) return FALSE;\r
-\r
-   return TRUE;\r
-}\r
-\r
-// piece_make_pawn()\r
-\r
-int piece_make_pawn(int colour) {\r
-\r
-   ASSERT(colour_is_ok(colour));\r
-\r
-   return MakePawn[colour];\r
-}\r
-\r
-// piece_pawn_opp()\r
-\r
-int piece_pawn_opp(int piece) {\r
-\r
-   ASSERT(piece==BlackPawn256||piece==WhitePawn256);\r
-\r
-   return piece ^ 15;\r
-}\r
-\r
-// piece_colour()\r
-\r
-int piece_colour(int piece) {\r
-\r
-   ASSERT(piece_is_ok(piece));\r
-\r
-   return piece & 3;\r
-}\r
-\r
-// piece_type()\r
-\r
-int piece_type(int piece) {\r
-\r
-   ASSERT(piece_is_ok(piece));\r
-\r
-   return piece & ~3;\r
-}\r
-\r
-// piece_is_pawn()\r
-\r
-bool piece_is_pawn(int piece) {\r
-\r
-   ASSERT(piece_is_ok(piece));\r
-\r
-   return (piece & PawnFlags) != 0;\r
-}\r
-\r
-// piece_is_knight()\r
-\r
-bool piece_is_knight(int piece) {\r
-\r
-   ASSERT(piece_is_ok(piece));\r
-\r
-   return (piece & KnightFlag) != 0;\r
-}\r
-\r
-// piece_is_bishop()\r
-\r
-bool piece_is_bishop(int piece) {\r
-\r
-   ASSERT(piece_is_ok(piece));\r
-\r
-   return (piece & QueenFlags) == BishopFlag;\r
-}\r
-\r
-// piece_is_rook()\r
-\r
-bool piece_is_rook(int piece) {\r
-\r
-   ASSERT(piece_is_ok(piece));\r
-\r
-   return (piece & QueenFlags) == RookFlag;\r
-}\r
-\r
-// piece_is_queen()\r
-\r
-bool piece_is_queen(int piece) {\r
-\r
-   ASSERT(piece_is_ok(piece));\r
-\r
-   return (piece & QueenFlags) == QueenFlags;\r
-}\r
-\r
-// piece_is_king()\r
-\r
-bool piece_is_king(int piece) {\r
-\r
-   ASSERT(piece_is_ok(piece));\r
-\r
-   return (piece & KingFlag) != 0;\r
-}\r
-\r
-// piece_is_slider()\r
-\r
-bool piece_is_slider(int piece) {\r
-\r
-   ASSERT(piece_is_ok(piece));\r
-\r
-   return (piece & QueenFlags) != 0;\r
-}\r
-\r
-// piece_to_12()\r
-\r
-int piece_to_12(int piece) {\r
-\r
-   ASSERT(piece_is_ok(piece));\r
-\r
-   return PieceTo12[piece];\r
-}\r
-\r
-// piece_from_12()\r
-\r
-int piece_from_12(int piece) {\r
-\r
-   ASSERT(piece>=0&&piece<12);\r
-\r
-   return PieceFrom12[piece];\r
-}\r
-\r
-// piece_to_char()\r
-\r
-int piece_to_char(int piece) {\r
-\r
-   ASSERT(piece_is_ok(piece));\r
-\r
-   return PieceString[piece_to_12(piece)];\r
-}\r
-\r
-// piece_from_char()\r
-\r
-int piece_from_char(int c) {\r
-\r
-   const char * ptr;\r
-\r
-   ptr = strchr(PieceString,c);\r
-   if (ptr == NULL) return PieceNone256;\r
-\r
-   return piece_from_12(ptr-PieceString);\r
-}\r
-\r
-// char_is_piece()\r
-\r
-bool char_is_piece(int c) {\r
-\r
-   return strchr("PNBRQK",c) != NULL;\r
-}\r
-\r
-// end of piece.cpp\r
-\r
+
+// piece.c
+
+// includes
+
+#include <string.h>
+
+#include "colour.h"
+#include "piece.h"
+#include "util.h"
+
+// "constants"
+
+static const uint8 MakePawn[ColourNb] = { PieceNone256, BlackPawn256, WhitePawn256 }; // -BW
+
+static const uint8 PieceFrom12[12] = {
+   BlackPawn256,   WhitePawn256,
+   BlackKnight256, WhiteKnight256,
+   BlackBishop256, WhiteBishop256,
+   BlackRook256,   WhiteRook256,
+   BlackQueen256,  WhiteQueen256,
+   BlackKing256,   WhiteKing256,
+};
+
+static const char PieceString[12+1] = "pPnNbBrRqQkK";
+
+// variables
+
+static sint8 PieceTo12[256];
+
+// functions
+
+// piece_init()
+
+void piece_init() {
+
+   int piece;
+
+   for (piece = 0; piece < 256; piece++) PieceTo12[piece] = -1;
+
+   for (piece = 0; piece < 12; piece++) {
+      PieceTo12[PieceFrom12[piece]] = piece;
+   }
+}
+
+// piece_is_ok()
+
+bool piece_is_ok(int piece) {
+
+   if (piece < 0 || piece >= 256) return FALSE;
+
+   if (PieceTo12[piece] < 0) return FALSE;
+
+   return TRUE;
+}
+
+// piece_make_pawn()
+
+int piece_make_pawn(int colour) {
+
+   ASSERT(colour_is_ok(colour));
+
+   return MakePawn[colour];
+}
+
+// piece_pawn_opp()
+
+int piece_pawn_opp(int piece) {
+
+   ASSERT(piece==BlackPawn256||piece==WhitePawn256);
+
+   return piece ^ 15;
+}
+
+// piece_colour()
+
+int piece_colour(int piece) {
+
+   ASSERT(piece_is_ok(piece));
+
+   return piece & 3;
+}
+
+// piece_type()
+
+int piece_type(int piece) {
+
+   ASSERT(piece_is_ok(piece));
+
+   return piece & ~3;
+}
+
+// piece_is_pawn()
+
+bool piece_is_pawn(int piece) {
+
+   ASSERT(piece_is_ok(piece));
+
+   return (piece & PawnFlags) != 0;
+}
+
+// piece_is_knight()
+
+bool piece_is_knight(int piece) {
+
+   ASSERT(piece_is_ok(piece));
+
+   return (piece & KnightFlag) != 0;
+}
+
+// piece_is_bishop()
+
+bool piece_is_bishop(int piece) {
+
+   ASSERT(piece_is_ok(piece));
+
+   return (piece & QueenFlags) == BishopFlag;
+}
+
+// piece_is_rook()
+
+bool piece_is_rook(int piece) {
+
+   ASSERT(piece_is_ok(piece));
+
+   return (piece & QueenFlags) == RookFlag;
+}
+
+// piece_is_queen()
+
+bool piece_is_queen(int piece) {
+
+   ASSERT(piece_is_ok(piece));
+
+   return (piece & QueenFlags) == QueenFlags;
+}
+
+// piece_is_king()
+
+bool piece_is_king(int piece) {
+
+   ASSERT(piece_is_ok(piece));
+
+   return (piece & KingFlag) != 0;
+}
+
+// piece_is_slider()
+
+bool piece_is_slider(int piece) {
+
+   ASSERT(piece_is_ok(piece));
+
+   return (piece & QueenFlags) != 0;
+}
+
+// piece_to_12()
+
+int piece_to_12(int piece) {
+
+   ASSERT(piece_is_ok(piece));
+
+   return PieceTo12[piece];
+}
+
+// piece_from_12()
+
+int piece_from_12(int piece) {
+
+   ASSERT(piece>=0&&piece<12);
+
+   return PieceFrom12[piece];
+}
+
+// piece_to_char()
+
+int piece_to_char(int piece) {
+
+   ASSERT(piece_is_ok(piece));
+
+   return PieceString[piece_to_12(piece)];
+}
+
+// piece_from_char()
+
+int piece_from_char(int c) {
+
+   const char * ptr;
+
+   ptr = strchr(PieceString,c);
+   if (ptr == NULL) return PieceNone256;
+
+   return piece_from_12(ptr-PieceString);
+}
+
+// char_is_piece()
+
+bool char_is_piece(int c) {
+
+   return strchr("PNBRQK",c) != NULL;
+}
+
+// end of piece.cpp
+