]> git.sesse.net Git - stockfish/blobdiff - src/endgame.cpp
Use operator~ to flip colors and squares
[stockfish] / src / endgame.cpp
index ac11b76e5f9568bc6b8d8c0ed8418c504c251104..00c707267575d816c5c0d12750768b9fa9610038 100644 (file)
@@ -1,7 +1,7 @@
 /*
   Stockfish, a UCI chess playing engine derived from Glaurung 2.1
   Copyright (C) 2004-2008 Tord Romstad (Glaurung author)
-  Copyright (C) 2008-2010 Marco Costalba, Joona Kiiski, Tord Romstad
+  Copyright (C) 2008-2012 Marco Costalba, Joona Kiiski, Tord Romstad
 
   Stockfish is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -205,10 +205,10 @@ Value Endgame<KPK>::operator()(const Position& pos) const {
   }
   else
   {
-      wksq = flip(pos.king_square(BLACK));
-      bksq = flip(pos.king_square(WHITE));
-      wpsq = flip(pos.piece_list(BLACK, PAWN)[0]);
-      stm = flip(pos.side_to_move());
+      wksq = ~pos.king_square(BLACK);
+      bksq = ~pos.king_square(WHITE);
+      wpsq = ~pos.piece_list(BLACK, PAWN)[0];
+      stm  = ~pos.side_to_move();
   }
 
   if (file_of(wpsq) >= FILE_E)
@@ -251,10 +251,10 @@ Value Endgame<KRKP>::operator()(const Position& pos) const {
 
   if (strongerSide == BLACK)
   {
-      wksq = flip(wksq);
-      wrsq = flip(wrsq);
-      bksq = flip(bksq);
-      bpsq = flip(bpsq);
+      wksq = ~wksq;
+      wrsq = ~wrsq;
+      bksq = ~bksq;
+      bpsq = ~bpsq;
   }
 
   Square queeningSq = make_square(file_of(bpsq), RANK_1);
@@ -369,7 +369,7 @@ Value Endgame<KBBKN>::operator()(const Position& pos) const {
   result += Value(square_distance(bksq, nsq) * 32);
 
   // Bonus for restricting the knight's mobility
-  result += Value((8 - count_1s<CNT32_MAX15>(pos.attacks_from<KNIGHT>(nsq))) * 8);
+  result += Value((8 - popcount<Max15>(pos.attacks_from<KNIGHT>(nsq))) * 8);
 
   return strongerSide == pos.side_to_move() ? result : -result;
 }
@@ -491,11 +491,11 @@ ScaleFactor Endgame<KRPKR>::operator()(const Position& pos) const {
   // pawn is on the left half of the board.
   if (strongerSide == BLACK)
   {
-      wksq = flip(wksq);
-      wrsq = flip(wrsq);
-      wpsq = flip(wpsq);
-      bksq = flip(bksq);
-      brsq = flip(brsq);
+      wksq = ~wksq;
+      wrsq = ~wrsq;
+      wpsq = ~wpsq;
+      bksq = ~bksq;
+      brsq = ~brsq;
   }
   if (file_of(wpsq) > FILE_D)
   {
@@ -867,10 +867,10 @@ ScaleFactor Endgame<KPKP>::operator()(const Position& pos) const {
 
   if (strongerSide == BLACK)
   {
-      wksq = flip(wksq);
-      bksq = flip(bksq);
-      wpsq = flip(wpsq);
-      stm = flip(stm);
+      wksq = ~wksq;
+      bksq = ~bksq;
+      wpsq = ~wpsq;
+      stm  = ~stm;
   }
 
   if (file_of(wpsq) >= FILE_E)