00001 /* checkMoveList.cc 00002 */ 00003 #include "osl/checkmate/checkMoveList.h" 00004 #include "osl/checkmate/checkMoveListProvider.h" 00005 #include "osl/checkmate/checkHashRecord.h" 00006 #include <iostream> 00007 00008 std::ostream& osl::checkmate:: 00009 operator<<(std::ostream& os, const CheckMoveList& l) 00010 { 00011 for (CheckMoveList::const_iterator p=l.begin(); p!=l.end(); ++p) 00012 { 00013 os << p->move << " "; 00014 } 00015 return os << "\n"; 00016 } 00017 00018 /* ------------------------------------------------------------------------- */ 00019 00020 void osl::checkmate:: 00021 CheckMoveListBase::setSize(size_t length, CheckMoveListProvider& src) 00022 { 00023 first = src.alloc(length); 00024 last = first + length; 00025 } 00026 00027 void osl::checkmate:: 00028 CheckMoveListBase::setOne(const CheckMove& data, CheckMoveListProvider& src) 00029 { 00030 if (first == last) 00031 setSize(1, src); 00032 *first = data; 00033 } 00034 00035 /* ------------------------------------------------------------------------- */ 00036 00037 const osl::checkmate::CheckMove* osl::checkmate:: 00038 CheckMoveList::find(Move move) const 00039 { 00040 for (const_iterator p=begin(); p!=end(); ++p) 00041 { 00042 if (p->move == move) 00043 return &*p; 00044 } 00045 return 0; 00046 } 00047 00048 osl::checkmate::CheckMove* osl::checkmate:: 00049 CheckMoveList::find(Move move) 00050 { 00051 for (iterator p=begin(); p!=end(); ++p) 00052 { 00053 if (p->move == move) 00054 return &*p; 00055 } 00056 return 0; 00057 } 00058 00059 void osl::checkmate:: 00060 CheckMoveList::dump(std::ostream& os) const 00061 { 00062 os << "moves size " << size() << "\n"; 00063 for (const_iterator p=begin(); p!=end(); ++p) 00064 { 00065 os << "moves " << p->flags << " " << p->move; 00066 if (p->record) 00067 { 00068 os << " " << p->record->proofDisproof() 00069 << " " << p->record << " parent " << p->record->parent; 00070 } 00071 else 00072 { 00073 os << " h " << (int)p->h_proof << " " << (int)p->h_disproof 00074 << " c " << (int)p->cost_proof << " " << (int)p->cost_disproof; 00075 } 00076 os << "\n"; 00077 } 00078 } 00079 00080 /* ------------------------------------------------------------------------- */ 00081 // ;;; Local Variables: 00082 // ;;; mode:c++ 00083 // ;;; c-basic-offset:2 00084 // ;;; End: