Changeset 528 for trunk/lib/Stats.h


Ignore:
Timestamp:
Dec 25, 2007, 11:23:04 AM (14 years ago)
Author:
Peter Johansson
Message:

fixes #280 - keep on refactoring of Stats class

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/lib/Stats.h

    r527 r528  
    125125    svn_revnum_t revision(void) const { return revision_; }
    126126
     127    /**
     128       \return resulting Stats
     129    */
     130    Stats& operator+=(const Stats&);
     131
     132
     133
    127134  protected:
    128135    inline std::string code_cache(void) const {return "CACHE CODE";}
    129136    inline std::string comments_cache(void) const {return "CACHE COMMENTS";}
    130     inline std::string empty_cache(void) const {return "CACHE EMPTY";}
     137    inline std::string other_cache(void) const {return "CACHE EMPTY";}
    131138    inline std::string total_cache(void) const {return "CACHE TOTAL";}
    132139
    133     typedef std::map<std::string, std::vector<u_int> > v_map;
     140    typedef std::map<std::string, std::vector<u_int> > Author2Vector;
     141    typedef Author2Vector::iterator A2VIter;
     142    typedef Author2Vector::const_iterator A2VConstIter;
    134143
    135144    void add_author(std::string);
     
    138147
    139148    /**
    140        Function to be called from children's operator+=
    141      */
    142     void base_add(const Stats&);
    143 
    144     /**
    145149       add range [\a first, \a last) to \a map
    146150     */
    147     void base_add(v_map::const_iterator first, v_map::const_iterator last,
    148                   v_map& map);
     151    void map_add(Author2Vector::const_iterator first,
     152                 Author2Vector::const_iterator last,
     153                 Author2Vector& map);
    149154
    150155    ///
     
    153158    void plot_init(const std::string& output) const;
    154159
     160    Author2Vector total_;
     161    Author2Vector code_;
     162    Author2Vector comments_;
     163    Author2Vector other_;
     164    std::set<std::string> authors_;
     165
     166    const std::vector<u_int>& get_vector(const Author2Vector&,
     167                                         std::string user) const;
    155168  private:
     169    void accumulate(std::vector<u_int>& vec) const;
     170    void accumulate_stats(void);
    156171    virtual bool do_load_cache(std::istream&)=0;
    157172    virtual void do_parse(const std::string&)=0;
    158173    virtual std::string do_plot(const std::string&, const std::string&) const=0;
    159174    virtual void do_print(std::ostream& ) const=0;
    160     virtual void do_reset(void)=0;
    161175   
    162     const std::vector<u_int>& get_vector(const v_map&, std::string user) const;
    163     virtual std::vector<u_int> vector(std::string type,
    164                                       std::string user) const=0;
    165     void update_stats(void);
    166 
    167     v_map total_;
    168     v_map code_;
    169     v_map comments_;
    170     v_map other_;
     176    u_int get_back(const Author2Vector&, std::string user) const;
    171177
    172178    svn_revnum_t revision_; // Should be the latest revision for whole project
    173179    svn_revnum_t last_changed_rev_; // Should be the latest revision for file
    174180
    175     std::set<std::string> authors_;
     181
     182    // using compiler generated copy constructor
     183    //Stats(const Stats&);
     184    // no assignment
     185    Stats& operator=(const Stats&);
     186
    176187  };
    177188}} // end of namespace svndigest end of namespace theplu
Note: See TracChangeset for help on using the changeset viewer.