As is defined now is always true, tested with:
for (long i=-
1000000; i <
1000000; i++)
if (!move_is_ok(Move(i)))
exit(0);
Reason is that move_from() and move_to() already truncate the
input value to something in the range [0, 63] that is always
a possible square.
So change definition to something useful.
The same applies also to square_is_ok()
No functional change.
Signed-off-by: Marco Costalba <mcostalba@gmail.com>
}
-/// Overload the << operator, to make it easier to print moves.
+/// Overload the << operator, to make it easier to print moves
std::ostream& operator << (std::ostream& os, Move m) {
}
-/// move_is_ok(), for debugging.
+/// move_is_ok(), for debugging
bool move_is_ok(Move m) {
- return square_is_ok(move_from(m)) && square_is_ok(move_to(m));
+ return move_from(m) != move_to(m); // Catches also MOVE_NONE
}
extern const std::string move_to_uci(Move m, bool chess960);
extern bool move_is_ok(Move m);
-
#endif // !defined(MOVE_H_INCLUDED)
}
inline bool square_is_ok(Square s) {
- return file_is_ok(square_file(s)) && rank_is_ok(square_rank(s));
+ return s >= SQ_A1 && s <= SQ_H8;
}
#endif // !defined(SQUARE_H_INCLUDED)