Boost logo

Boost-Commit :

From: chintanraoh_at_[hidden]
Date: 2008-06-05 14:25:29


Author: chintanraoh
Date: 2008-06-05 14:25:29 EDT (Thu, 05 Jun 2008)
New Revision: 46176
URL: http://svn.boost.org/trac/boost/changeset/46176

Log:
fixed bugs. Thanks to the new test_trie_string.cpp file
Text files modified:
   sandbox/SOC/2008/digital_searching/dsearch/boost/dsearch/trie_iterator.hpp | 33 ++++++++++++++++++++++++++-------
   1 files changed, 26 insertions(+), 7 deletions(-)

Modified: sandbox/SOC/2008/digital_searching/dsearch/boost/dsearch/trie_iterator.hpp
==============================================================================
--- sandbox/SOC/2008/digital_searching/dsearch/boost/dsearch/trie_iterator.hpp (original)
+++ sandbox/SOC/2008/digital_searching/dsearch/boost/dsearch/trie_iterator.hpp 2008-06-05 14:25:29 EDT (Thu, 05 Jun 2008)
@@ -61,7 +61,12 @@
         void to_left_most()
         {
                 Cursor c=this->top();
- if(c.has_value()) return ;
+ if(c.has_value())
+ {
+ std::cout<<"in has_value"<<std::endl;
+ return ;
+ }
+ std::cout<<"out of has_value"<<std::endl;
                 while(!c.empty())
                 {
                         std::cout<<"PUSHING"<<std::endl;
@@ -74,6 +79,7 @@
 
         void decrement()
         {
+ bool first_loop=true;
                 Cursor top;
                 if(end_flag)
                 {
@@ -83,20 +89,33 @@
                 }
                 
                 assert(!this->empty());
- pop();
+ //pop();
                 top=this->top();
- pop();
+ this->pop();
+ if(this->empty())
+ {
+ this->push(top);
+ end_flag=true;
+ return;
+ }
                 while(top==this->top().begin())
                 {
- if(top.has_value())
+ if(top.has_value() && !first_loop)
                         {
                                 this->push(top); //to make sure to_right_most still works
                                 return;
                         }
+ first_loop=false;
                         top=this->top();
                         this->pop();
                         if(this->empty())
+ {
+ this->push(top);
+ if(!top.has_value())
+ end_flag=true;
                                 return;
+ }
+
                 }
                 --top;
                 this->push(top);
@@ -134,6 +153,7 @@
         bool equal(const self &other) const
         {
                 assert(!this->empty());
+ if(end_flag!=other.end_flag) return false;
                 if(other.cur_st.top()==cur_st.top())
                         return true;
                 return false;
@@ -146,7 +166,6 @@
 
         trie_iterator(Cursor const &cursor_root,bool end_flag=false) //returns begin cursor
         {
- Cursor c=cursor_root;
                 this->end_flag=end_flag;
                 if(this->end_flag)
                 {
@@ -157,10 +176,10 @@
                 if(cursor_root.empty() && !cursor_root.has_value()) //special case of only empty root
                 {
                         end_flag=true;
- this->push(c);
+ this->push(cursor_root);
                         return;
                 }
- this->push(c);
+ this->push(cursor_root);
                 to_left_most();
         }
 };


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk