00001 #include "osl/checkmate/arrayCheckHashTable.h" 00002 #include <iostream> 00003 00004 osl::checkmate::ArrayCheckHashTable::ArrayCheckHashTable(Player a) 00005 : buckets(new ElementList[bucketSize]), numElements(0), attacker(a) 00006 { 00007 } 00008 osl::checkmate::ArrayCheckHashTable::~ArrayCheckHashTable() 00009 { 00010 #ifdef CHECKMATE_DEBUG 00011 confirmNoVisitedRecords(); 00012 #endif 00013 } 00014 00015 void osl::checkmate::ArrayCheckHashTable::clear() 00016 { 00017 TwinTableHolder::clear(); 00018 for (unsigned int i=0; i<bucketSize; ++i) 00019 { 00020 ElementList& e = buckets[i]; 00021 e.elem.colleagues.clear(); 00022 e.list.clear(); 00023 } 00024 numElements = 0; 00025 } 00026 00027 void osl::checkmate::ArrayCheckHashTable::confirmNoVisitedRecords() const 00028 { 00029 int visited = 0; 00030 for (unsigned int i=0; i<bucketSize; ++i) 00031 { 00032 const ElementList& e = buckets[i]; 00033 visited += e.elem.colleagues.confirmNoVisitedRecords(); 00034 for (list_t::const_iterator p=e.list.begin(); p!=e.list.end(); ++p) 00035 { 00036 const BoardEntry& b = *p; 00037 int curVisited = b.colleagues.confirmNoVisitedRecords(); 00038 if (curVisited) 00039 std::cerr << b.board_key[0] 00040 << " " << b.board_key[1] 00041 << "\n"; 00042 visited += curVisited; 00043 } 00044 } 00045 if (visited) 00046 { 00047 std::cerr << "ArrayCheckHashTable::confirmNoVisitedRecords " 00048 << visited << " visited nodes found\n"; 00049 } 00050 } 00051 00052 // ;;; Local Variables: 00053 // ;;; mode:c++ 00054 // ;;; c-basic-offset:2 00055 // ;;; End: