Send back a prettyprinted version of the move on hash probe.
[stockfish] / src / client.cpp
index 054e4ce5573ed16daf8c4a1f12f65c2da942f17f..a57879050bf0164b61ee14c2b662e3b61eac5818 100644 (file)
@@ -13,14 +13,9 @@ using grpc::ClientContext;
 using grpc::Status;
 using namespace hashprobe;
 
-std::string FormatMove(Move move) {
-  if (move == MOVE_NULL) {
-    return "Null-move";
-  } else if (move == MOVE_NONE) {
-    return "MOVE_NONE";
-  } else {
-    return UCI::square(from_sq(move)) + UCI::square(to_sq(move));
-  }
+std::string FormatMove(const HashProbeMove &move) {
+  if (move.from_sq().empty()) return "MOVE_NONE";
+  return move.pretty();
 }
 
 int main(int argc, char** argv) {
@@ -45,26 +40,36 @@ int main(int argc, char** argv) {
     Status status = stub->Probe(&context, request, &response);
 
     if (status.ok()) {
-      for (const HashProbeMove &hpmove : response.move()) {
-        std::cout << FormatMove(Move(hpmove.move())) << " ";
-        std::cout << hpmove.found() << " ";
-        std::cout << FormatMove(Move(hpmove.pv_move())) << " ";
-        switch (hpmove.bound()) {
-        case HashProbeMove::BOUND_NONE:
+      for (const HashProbeLine &line : response.line()) {
+        std::cout << FormatMove(line.move()) << " ";
+        std::cout << line.found() << " ";
+       for (const HashProbeMove &move : line.pv()) {
+          std::cout << FormatMove(move) << ",";
+        }
+        std::cout << " ";
+        switch (line.bound()) {
+        case HashProbeLine::BOUND_NONE:
           std::cout << "?";
           break;
-        case HashProbeMove::BOUND_EXACT:
+        case HashProbeLine::BOUND_EXACT:
           std::cout << "==";
           break;
-        case HashProbeMove::BOUND_UPPER:
+        case HashProbeLine::BOUND_UPPER:
           std::cout << "<=";
           break;
-        case HashProbeMove::BOUND_LOWER:
+        case HashProbeLine::BOUND_LOWER:
           std::cout << ">=";
           break;
         } 
-        std::cout << " " << UCI::value(Value(hpmove.value())) << " ";
-        std::cout << hpmove.depth() << std::endl;
+       switch (line.value().score_type()) {
+       case HashProbeScore::SCORE_CP:
+         std::cout << " cp " << line.value().score_cp() << " ";
+          break;
+       case HashProbeScore::SCORE_MATE:
+         std::cout << " mate " << line.value().score_mate() << " ";
+          break;
+        }
+        std::cout << line.depth() << std::endl;
       }
       std::cout << "END" << std::endl;
     } else {