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 void osl::search:: 00041 RecordStack::dump() const 00042 { 00043 for (size_t i=0; i<data.size(); ++i) { 00044 std::cerr << data[i]; 00045 if (data[i]) 00046 std::cerr << "\t" << *(data[i]); 00047 std::cerr << std::endl; 00048 } 00049 } 00050 00051 /* ------------------------------------------------------------------------- */ 00052 // ;;; Local Variables: 00053 // ;;; mode:c++ 00054 // ;;; c-basic-offset:2 00055 // ;;; End: