-\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
+