src/commit-data.h

changeset 75
857af79337d5
parent 61
d77763d2fdda
equal deleted inserted replaced
74:bae9922f4681 75:857af79337d5
29 #include <numeric> 29 #include <numeric>
30 #include <vector> 30 #include <vector>
31 #include <string> 31 #include <string>
32 32
33 namespace fm { 33 namespace fm {
34 using commit_counts = std::unordered_map<
35 std::string, // repository name
36 unsigned>;
37 using summaries_lists = std::unordered_map<
38 std::string, // repository name
39 std::vector<std::string> >;
40 using tag_lists = std::unordered_map<
41 std::string, // repository name
42 std::vector<std::string> >;
43
34 struct commits final { 44 struct commits final {
35 std::unordered_map< 45 summaries_lists summaries;
36 std::string, // repository name 46 tag_lists tags;
37 std::vector<std::string> > summaries;
38 std::unordered_map<
39 std::string, // repository name
40 std::vector<std::string> > tags;
41 47
42 [[nodiscard]] unsigned count(const std::string &repo) const { 48 [[nodiscard]] unsigned count(const std::string &repo) const {
43 return summaries.at(repo).size(); 49 return summaries.at(repo).size();
44 } 50 }
45 51
46 [[nodiscard]] unsigned count() const { 52 [[nodiscard]] unsigned count() const {
47 return std::accumulate( 53 return std::accumulate(
48 summaries.begin(), summaries.end(), 0u, 54 summaries.begin(), summaries.end(), 0u,
49 [](unsigned sum, const auto &pair) { return sum + pair.second.size(); }); 55 [](unsigned sum, const auto &pair) { return sum + pair.second.size(); });
56 }
57 };
58
59 struct commit_summary final {
60 tag_lists tags_with_date;
61 commit_counts commits;
62
63 [[nodiscard]] unsigned count(const std::string &repo) const {
64 return commits.at(repo);
65 }
66
67 [[nodiscard]] unsigned count() const {
68 return std::accumulate(
69 commits.begin(), commits.end(), 0u,
70 [](unsigned sum, const auto &pair) { return sum + pair.second; });
50 } 71 }
51 }; 72 };
52 } 73 }
53 74
54 #endif //COMMIT_DATA_H 75 #endif //COMMIT_DATA_H

mercurial