Introduce operator~(Piece c)
authorMarco Costalba <mcostalba@gmail.com>
Sun, 9 Jun 2013 10:43:12 +0000 (12:43 +0200)
committerMarco Costalba <mcostalba@gmail.com>
Sun, 9 Jun 2013 10:44:04 +0000 (12:44 +0200)
Small syntactic sugar to reverse piece color.

No functional change.

src/position.cpp
src/psqtab.h
src/types.h

index d145ddfa0def3ae65959b0593667a6ad2e34e466..2227c553ca6c7a79c1e5f50e8e588ce359ddc618 100644 (file)
@@ -85,17 +85,17 @@ void init() {
   side = rk.rand<Key>();
   exclusion  = rk.rand<Key>();
 
-  for (PieceType pt = PAWN; pt <= KING; pt++)
+  for (Piece pc = W_PAWN; pc <= W_KING; pc++)
   {
-      PieceValue[MG][make_piece(BLACK, pt)] = PieceValue[MG][pt];
-      PieceValue[EG][make_piece(BLACK, pt)] = PieceValue[EG][pt];
+      PieceValue[MG][~pc] = PieceValue[MG][pc];
+      PieceValue[EG][~pc] = PieceValue[EG][pc];
 
-      Score v = make_score(PieceValue[MG][pt], PieceValue[EG][pt]);
+      Score v = make_score(PieceValue[MG][pc], PieceValue[EG][pc]);
 
       for (Square s = SQ_A1; s <= SQ_H8; s++)
       {
-          pieceSquareTable[make_piece(WHITE, pt)][ s] =  (v + PSQT[pt][s]);
-          pieceSquareTable[make_piece(BLACK, pt)][~s] = -(v + PSQT[pt][s]);
+          pieceSquareTable[ pc][ s] =  (v + PSQT[pc][s]);
+          pieceSquareTable[~pc][~s] = -(v + PSQT[pc][s]);
       }
   }
 }
index ca39fe88ebe4a7e3c18ff820440d13c0befc68e6..3a6b101585cc6628f2f226c04d7b1db46831ced3 100644 (file)
@@ -25,7 +25,7 @@
 #define S(mg, eg) make_score(mg, eg)
 
 
-/// PSQT[PieceType][Square] contains Piece-Square scores. For each piece type on
+/// PSQT[Piece][Square] contains Piece-Square scores. For each piece type on
 /// a given square a (midgame, endgame) score pair is assigned. PSQT is defined
 /// for white side, for black side the tables are symmetric.
 
index 653ebade2f805b55a942269cbb76cceb154eac38..ac2ca0e78d9a4ea5d0b5497244de1f14339855f2 100644 (file)
@@ -359,6 +359,10 @@ inline Square operator~(Square s) {
   return Square(s ^ 56); // Vertical flip SQ_A1 -> SQ_A8
 }
 
+inline Piece operator~(Piece c) {
+  return Piece(c ^ 8);
+}
+
 inline Square operator|(File f, Rank r) {
   return Square((r << 3) | f);
 }