00001 /* searchMoveSet.cc 00002 */ 00003 #include "osl/search/searchMoveSet.h" 00004 #include "osl/search/simpleHashRecord.h" 00005 #include "osl/record/csa.h" 00006 #include <iostream> 00007 00008 osl::search:: 00009 SearchMoveSet::SearchMoveSet(const SearchMoveSet& src) 00010 : base_t(src) 00011 { 00012 } 00013 00014 osl::search::SearchMoveSet& osl::search:: 00015 SearchMoveSet::operator=(const SearchMoveSet& src) 00016 { 00017 if (this != &src) 00018 base_t::operator=(src); 00019 return *this; 00020 } 00021 00022 osl::search:: 00023 SearchMoveSet::~SearchMoveSet() 00024 { 00025 assert(isValidAll()); 00026 } 00027 00028 bool osl::search:: 00029 SearchMoveSet::isValidAll() const 00030 { 00031 #ifdef OSL_SMP 00032 Mutex::scoped_lock lk(mutex); 00033 #endif 00034 for (const_iterator p=begin(); p!=end(); ++p) 00035 { 00036 if (! p->getMove().isValidOrPass()) 00037 return false; 00038 } 00039 return true; 00040 } 00041 00042 void osl::search:: 00043 SearchMoveSet::dump(std::ostream& os) const 00044 { 00045 #ifdef OSL_SMP 00046 Mutex::scoped_lock lk(mutex); 00047 #endif 00048 size_t i=0; 00049 for (const_iterator p=begin(); p!=end(); ++p, ++i) 00050 { 00051 os << 'M' << i << "\t" << record::csa::show(p->getMove()); 00052 os << " " << p->getLogProb(); 00053 00054 #ifndef NDEBUG 00055 os << "\t" << p->record; 00056 # if 0 00057 os << " " << &*p; 00058 # endif 00059 #endif 00060 if (p->record) 00061 { 00062 os << "\t"; 00063 if (p->record->hasLowerBound(0)) 00064 os << p->record->lowerBound(); 00065 else 00066 os << "*"; 00067 os << " < "; 00068 if (p->record->hasUpperBound(0)) 00069 os << p->record->upperBound(); 00070 else 00071 os << "*"; 00072 } 00073 os << "\n"; 00074 assert(p->getMove().isValidOrPass()); 00075 } 00076 } 00077 00078 /* ------------------------------------------------------------------------- */ 00079 // ;;; Local Variables: 00080 // ;;; mode:c++ 00081 // ;;; c-basic-offset:2 00082 // ;;; End: