using grpc::Channel;
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));
+ }
+}
int main(int argc, char** argv) {
std::shared_ptr<Channel> channel(grpc::CreateChannel(
Status status = stub->Probe(&context, request, &response);
if (status.ok()) {
- std::cout << response.found() << " ";
- if (Move(response.move()) == MOVE_NULL) {
- std::cout << "Null-move ";
- } else if (Move(response.move()) == MOVE_NONE) {
- std::cout << "MOVE_NONE ";
- } else {
- std::cout << UCI::square(from_sq(Move(response.move())))
- << UCI::square(to_sq(Move(response.move()))) << " ";
+ 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:
+ std::cout << "?";
+ break;
+ case HashProbeMove::BOUND_EXACT:
+ std::cout << "==";
+ break;
+ case HashProbeMove::BOUND_UPPER:
+ std::cout << "<=";
+ break;
+ case HashProbeMove::BOUND_LOWER:
+ std::cout << ">=";
+ break;
+ }
+ std::cout << " " << UCI::value(Value(hpmove.value())) << " ";
+ std::cout << hpmove.depth() << std::endl;
}
- switch (response.bound()) {
- case HashProbeResponse::BOUND_NONE:
- std::cout << "?";
- break;
- case HashProbeResponse::BOUND_EXACT:
- std::cout << "==";
- break;
- case HashProbeResponse::BOUND_UPPER:
- std::cout << "<=";
- break;
- case HashProbeResponse::BOUND_LOWER:
- std::cout << ">=";
- break;
- }
- std::cout << " " << UCI::value(Value(response.value())) << " ";
- std::cout << response.depth() << std::endl;
+ std::cout << "END" << std::endl;
} else {
std::cout << "ERROR" << std::endl;
}