00001 /* recordStack.cc 00002 */ 00003 #include "osl/search/recordStack.h" 00004 #include <iostream> 00005 00006 osl::search:: 00007 RecordStack::RecordStack() 00008 : root_record(0) 00009 { 00010 clear(); 00011 } 00012 00013 osl::search:: 00014 RecordStack::RecordStack(RecordStack const& r) 00015 : root_record(r.root_record) 00016 { 00017 clear(); 00018 assert(r.size()<=static_cast<size_t>(SEARCH_DEPTH_MAX)); 00019 for(size_t i=1;i<r.size();i++){ 00020 if(r.data[i]!=0){ 00021 backup[i] = *(r.data[i]); 00022 // assert(backup.size()==i+1); 00023 data.push_back( &backup[i] ); 00024 } 00025 else{ 00026 data.push_back(0); 00027 backup[i] = 0; 00028 } 00029 } 00030 } 00031 00032 void osl::search:: 00033 RecordStack::clear() 00034 { 00035 data.clear(); 00036 backup.fill(0); 00037 push(&root_record); 00038 } 00039 00040 #ifndef MINIMAL 00041 void osl::search:: 00042 RecordStack::dump() const 00043 { 00044 for (size_t i=0; i<data.size(); ++i) { 00045 std::cerr << data[i]; 00046 if (data[i]) 00047 std::cerr << "\t" << *(data[i]); 00048 std::cerr << std::endl; 00049 } 00050 } 00051 #endif 00052 /* ------------------------------------------------------------------------- */ 00053 // ;;; Local Variables: 00054 // ;;; mode:c++ 00055 // ;;; c-basic-offset:2 00056 // ;;; End: