Changeset 482 for trunk/lib/Stats.cc


Ignore:
Timestamp:
Oct 13, 2007, 3:40:38 AM (14 years ago)
Author:
Peter Johansson
Message:

fixes #79 and #5. Only updating changed files.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/lib/Stats.cc

    r468 r482  
    9292                  const Parser::line_type& lt)
    9393  {
     94    assert(user.size());
    9495    authors_.insert(user);
    9596
     
    145146
    146147
    147   void Stats::load(std::istream& is)
    148   {
    149     is >> last_changed_rev_;
     148  bool Stats::load_cache(std::istream& is)
     149  {
     150    svn_revnum_t rev;
     151    is >> rev;
     152    if (rev<last_changed_rev_){
     153      return false; // cache is not up to date
     154    }
    150155    size_t a_size=0;
    151156    authors_.clear();
     
    154159    while (authors_.size()<a_size){
    155160      getline(is, str);
     161      assert(str.size());
    156162      authors_.insert(str);
    157163    }
     164    getline(is, str);
     165    if (str!=code_cache()){
     166      return false;
     167    }
    158168    load(is, code_);
     169    getline(is, str);
     170    getline(is, str);
     171    if (str!=comments_cache()){
     172      return false;
     173    }
    159174    load(is, comments_);
     175    getline(is, str);
     176    getline(is, str);
     177    if (str!=empty_cache()){
     178      return false;
     179    }
    160180    load(is, empty_);
     181    getline(is, str);
     182    getline(is, str);
     183    if (str!=total_cache()){
     184      return false;
     185    }
    161186    load(is, total_);
     187    getline(is,str);
     188    getline(is,str);
     189    return str==end_of_cache();
    162190  }
    163191
     
    166194  {
    167195    m.clear();
    168     while (m.size() < authors_.size()) {
     196    while (m.size() < authors_.size() && is.good()) {
    169197      std::string name;
    170198      std::getline(is, name);
     199      assert(name.size());
    171200      std::vector<u_int>& vec=m[name];
    172201      size_t revs=0;
     
    319348  void Stats::print(std::ostream& os) const
    320349  {
    321     os << last_changed_rev_ << "\n";
    322     os << authors_.size() << "\n";
     350    os << last_changed_rev_ << " ";
     351    os << authors_.size() << " ";
     352
    323353    std::copy(authors_.begin(), authors_.end(),
    324354              std::ostream_iterator<std::string>(os, "\n"));
     355    os << code_cache() << "\n";
    325356    print(os, code_);
     357    os << "\n" << comments_cache() << "\n";
    326358    print(os, comments_);
     359    os << "\n" << empty_cache() << "\n";
    327360    print(os, empty_);
     361    os << "\n" << total_cache() << "\n";
    328362    print(os, total_);
     363    os << "\n" << end_of_cache() << "\n";
    329364  }
    330365
     
    334369    for (MapConstIter_ i(m.begin()); i!=m.end(); ++i){
    335370      os << i->first << "\n";
    336       os << i->second.size() << "\n";
     371      os << i->second.size() << " ";
    337372      std::copy(i->second.begin(), i->second.end(),
    338                 std::ostream_iterator<u_int>(os, "\n"));
     373                std::ostream_iterator<u_int>(os, " "));
    339374    }
    340375  }
Note: See TracChangeset for help on using the changeset viewer.