Ignore:
Timestamp:
Aug 17, 2007, 9:03:32 PM (14 years ago)
Author:
Peter Johansson
Message:

fixes #248 and refs #185

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/lib/LogIterator.cc

    r450 r452  
    2828#include <cassert>
    2929
     30#include <iostream>
    3031namespace theplu{
    3132namespace svndigest{
    3233
    3334  LogIterator::LogIterator(const SVNlog& log, size_t index)
    34     : log_(log), index_(index)
    35   {}
     35    : commit_(NULL), log_(log), index_(index)
     36  {
     37    update_commit();
     38  }
     39
     40 
     41  LogIterator::LogIterator(const LogIterator& other)
     42    : commit_(NULL), log_(other.log_), index_(other.index_)
     43  {
     44    update_commit();
     45  }
    3646
    3747 
     
    4353
    4454
     55  void LogIterator::update_commit(void)
     56  {
     57    if (commit_)
     58      delete commit_;
     59    if (index_<log_.author().size())
     60      commit_ = new Commitment(log_.author()[index_],
     61                               log_.date()[index_],
     62                               log_.message()[index_],
     63                               log_.revision()[index_]);
     64    else
     65      commit_ = NULL;
     66  }
     67
     68 
    4569  bool LogIterator::operator<(const LogIterator& other) const
    4670  {
     71    assert(&log_==&other.log_);
    4772    return index_<other.index_;
    4873  }
    4974
    5075
    51   const Commitment& LogIterator::operator*()
     76  const Commitment& LogIterator::operator*() const
    5277  {
    5378    assert(index_<log_.revision().size());
    54     if (!commit_)
    55       commit_ = new Commitment(log_.author()[index_],
    56                               log_.date()[index_],
    57                               log_.message()[index_],
    58                               log_.revision()[index_]);
     79    if (!commit_){
     80      std::cout << index_ << std::endl;
     81     
     82    }
     83    assert(commit_);
    5984    return *commit_;
    6085  }
    6186
    6287
    63   const Commitment* LogIterator::operator->(void)
     88  const Commitment* LogIterator::operator->(void) const
    6489  {
    6590    return &this->operator*();
     
    6994  LogIterator& LogIterator::operator++(void)
    7095  {
    71     if (index_<log_.revision().size()){
    72       ++index_;
    73       delete commit_;
    74       commit_ = NULL;
    75     }                               
     96    ++index_;
     97    if (index_>log_.revision().size())
     98      index_=log_.revision().size();
     99    update_commit();
    76100   
    77101    return *this;
Note: See TracChangeset for help on using the changeset viewer.