00001 /* checkMove.cc 00002 */ 00003 #include "osl/checkmate/checkMove.h" 00004 #include <iostream> 00005 00006 namespace osl 00007 { 00008 using namespace checkmate; 00009 namespace 00010 { 00011 void show_flags(std::ostream& os, int flags) 00012 { 00013 os << ((flags & MoveFlags::ImmediateCheckmate) ? 'I' : '-') 00014 << ((flags & MoveFlags::Upward) ? 'u' : '-') 00015 << ((flags & MoveFlags::NoPromote) ? 'n' : '-') 00016 << ((flags & MoveFlags::SacrificeAttack) ? 's' : '-') 00017 << ((flags & MoveFlags::BlockingBySacrifice) ? 'b' : '-') 00018 << ((flags & MoveFlags::Solved) ? 'S' : '-'); 00019 } 00020 } 00021 } 00022 00023 std::ostream& osl::checkmate::operator<<(std::ostream& os, MoveFlags f) 00024 { 00025 show_flags(os, f.getFlags()); 00026 return os; 00027 } 00028 00029 std::ostream& osl::checkmate::operator<<(std::ostream& os, MoveFilter f) 00030 { 00031 show_flags(os, ~f.getMask()); 00032 return os; 00033 } 00034 00035 /* ------------------------------------------------------------------------- */ 00036 // ;;; Local Variables: 00037 // ;;; mode:c++ 00038 // ;;; c-basic-offset:2 00039 // ;;; End: