Ignore:
Timestamp:
Jun 4, 2008, 12:05:22 AM (13 years ago)
Author:
Jari Häkkinen
Message:

Merged trunk changes r608:645 to replacing_gnuplot branch.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/replacing_gnuplot/lib/SVNlog.cc

    r519 r646  
    2525
    2626#include "Commitment.h"
    27 #include "LogIterator.h"
    2827#include "SVN.h"
    2928
     
    3938  SVNlog::SVNlog(void)
    4039  {
    41     assert(date().empty());
    42     assert(author().empty());
    43     assert(revision().empty());
    44     assert(message().empty());
    4540  }
    4641
     
    5045    SVN::instance()->client_log(path, log_message_receiver,
    5146                                static_cast<void*>(&lb_));
    52     assert(date().size()==author().size());
    53     assert(date().size()==revision().size());
    54     assert(date().size()==message().size());
    5547  }
    5648
     
    6153
    6254 
    63   LogIterator SVNlog::begin() const
     55  bool SVNlog::exist(std::string name) const
    6456  {
    65     return LogIterator(*this, 0);
     57   
     58    std::vector<Commitment>::const_reverse_iterator iter = commits().rbegin();
     59    for ( ; iter!= commits().rend(); ++iter)
     60      if (iter->author() == name)
     61        return true;
     62    return false;
    6663  }
    6764
    6865
    69   LogIterator SVNlog::end() const
     66  const Commitment& SVNlog::latest_commit(void) const
    7067  {
    71     return LogIterator(*this, revision().size());
     68    return commits().back();
    7269  }
    7370
    7471
    75   bool SVNlog::exist(std::string name) const
     72  const Commitment& SVNlog::latest_commit(std::string name) const
    7673  {
    77     std::vector<std::string>::const_reverse_iterator iter =
    78       find(author().rbegin(), author().rend(), name);
    79     return iter!=author().rend();
    80   }
    81 
    82 
    83   Commitment SVNlog::latest_commit(void) const
    84   {
    85     return Commitment(author().back(), date().back(),
    86                       message().back(), revision().back());
    87                                              
    88   }
    89 
    90 
    91   Commitment SVNlog::latest_commit(std::string name) const
    92   {
    93     std::vector<std::string>::const_reverse_iterator iter =
    94       find(author().rbegin(), author().rend(), name);
    95     size_t dist(std::distance(iter, author().rend()));
    96     if (!dist) {
    97       Commitment c;
    98       assert(false);
    99       return c;
    100     }
    101     return Commitment(author()[dist-1], date()[dist-1],
    102                       message()[dist-1], revision()[dist-1]);
    103                                              
    104   }
    105 
    106 
    107   void SVNlog::push_back(const Commitment& c)
    108   {
    109     lb_.authors.push_back(c.author());
    110     lb_.commit_dates.push_back(c.date());
    111     lb_.msg.push_back(c.message());
    112     lb_.rev.push_back(c.revision());
    113   }
    114 
    115 
    116   void SVNlog::reserve(size_t i)
    117   {
    118     lb_.authors.reserve(i);
    119     lb_.commit_dates.reserve(i);
    120     lb_.msg.reserve(i);
    121     lb_.rev.reserve(i);
     74    std::vector<Commitment>::const_reverse_iterator iter = commits().rbegin();
     75    for ( ; iter!= commits().rend(); ++iter)
     76      if (iter->author() == name)
     77        return *iter;
     78    assert(false);
    12279  }
    12380
     
    13087  {
    13188    struct log_receiver_baton *lb=static_cast<struct log_receiver_baton*>(baton);
    132     if (date && date[0])
    133       lb->commit_dates.push_back(date);
    134     else
     89    if (!date || !date[0])
    13590      throw SVNException("No date defined for revision: " + rev);
     91    std::string a;
    13692    if (author && author[0])
    137       lb->authors.push_back(author);
    138     else
    139       lb->authors.push_back("");
    140     lb->rev.push_back(rev);
     93      a=author;
     94    std::string message;
    14195    if (msg)
    142       lb->msg.push_back(std::string(msg));
    143     else
    144       lb->msg.push_back(std::string(""));
     96      message = msg;
     97    lb->commits.push_back(Commitment(a, date, message, rev));
    14598    return SVN_NO_ERROR;
    14699  }
     
    149102  void SVNlog::swap(SVNlog& rhs)
    150103  {
    151     lb_.authors.swap(rhs.lb_.authors);
    152     lb_.commit_dates.swap(rhs.lb_.commit_dates);
    153     lb_.msg.swap(rhs.lb_.msg);
    154     lb_.rev.swap(rhs.lb_.rev);
     104    lb_.commits.swap(rhs.lb_.commits);
    155105  }
    156106
     
    159109  {
    160110    SVNlog log;
    161     LogIterator lhs_iter(lhs.begin());
    162     LogIterator rhs_iter(rhs.begin());
    163     while(lhs_iter<lhs.end() && rhs_iter<rhs.end()) {
     111    std::vector<Commitment>::iterator lhs_iter=lhs.commits().begin();
     112    std::vector<Commitment>::const_iterator rhs_iter=rhs.commits().begin();
     113    while(lhs_iter<lhs.commits().end() && rhs_iter<rhs.commits().end()) {
    164114      if (lhs_iter->revision() < rhs_iter->revision()) {
    165115       
    166         log.push_back(*lhs_iter);
     116        log.commits().push_back(*lhs_iter);
    167117        ++lhs_iter;
    168118      }
    169119      else if (rhs_iter->revision()<lhs_iter->revision()) {
    170         log.push_back(*rhs_iter);
     120        log.commits().push_back(*rhs_iter);
    171121        ++rhs_iter;
    172122      }
    173123      else {
    174         log.push_back(*lhs_iter);
     124        log.commits().push_back(*lhs_iter);
    175125        ++lhs_iter;
    176126        ++rhs_iter;
    177127      }
    178128    }
    179     while(lhs_iter<lhs.end()) {
    180         log.push_back(*lhs_iter);
    181         ++lhs_iter;
     129    while(lhs_iter<lhs.commits().end()) {
     130      log.commits().push_back(*lhs_iter);
     131      ++lhs_iter;
    182132    }
    183     while(rhs_iter<rhs.end()) {
    184         log.push_back(*rhs_iter);
    185         ++rhs_iter;
     133    while(rhs_iter<rhs.commits().end()) {
     134      log.commits().push_back(*rhs_iter);
     135      ++rhs_iter;
    186136    }
    187137    lhs.swap(log);
Note: See TracChangeset for help on using the changeset viewer.