| 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 |