10#include <unordered_map>
13#include "../helpers/String.h"
23 using CveShaMapTy = std::unordered_multimap<std::string, std::string,
26 using ShaCveMapTy = std::unordered_map<std::string, std::string,
53 CveShaMap(
const std::filesystem::path &vsource = {},
54 ShaSize shaSize = ShaSize::Long,
55 const std::string &branch =
"origin/master",
57 bool rejected =
false);
64 std::string_view
getCve(std::string_view shaCommit)
const {
65 const auto it = m_shaCveMap.find(shaCommit);
66 if (it != m_shaCveMap.cend())
77 std::vector<std::string>
getShas(std::string_view cveNumber)
const {
78 std::vector<std::string> ret;
79 const auto range = m_cveShaMap.equal_range(cveNumber);
80 std::transform(range.first, range.second, std::back_inserter(ret),
81 [](
const auto &p) { return p.second; });
90 std::set<std::string> ret;
91 std::transform(m_cveShaMap.cbegin(), m_cveShaMap.cend(),
92 std::inserter(ret, ret.end()),
93 [](
const auto &p) { return p.first; });
A map between CVE numbers and upstream SHAs.
Definition CveShaMap.h:20
std::unordered_multimap< std::string, std::string, SlHelpers::String::Hash, SlHelpers::String::Eq > CveShaMapTy
CVE -> upstream SHA mapping.
Definition CveShaMap.h:23
std::unordered_map< std::string, std::string, SlHelpers::String::Hash, SlHelpers::String::Eq > ShaCveMapTy
Upstream SHA -> CVE mapping.
Definition CveShaMap.h:26
std::string_view getCve(std::string_view shaCommit) const
Get CVE number for shaCommit.
Definition CveShaMap.h:64
CveShaMap(const std::filesystem::path &vsource={}, ShaSize shaSize=ShaSize::Long, const std::string &branch="origin/master", unsigned year=0, bool rejected=false)
Create a new CveShaMap.
std::vector< std::string > getShas(std::string_view cveNumber) const
Get SHAs for cveNumber.
Definition CveShaMap.h:77
CveShaMap(CveShaMap &&)=default
Move constructor.
CveShaMap & operator=(CveShaMap &&)=default
Move assignment operator.
ShaSize
Store Long or Short SHAs.
Definition CveShaMap.h:30
std::set< std::string > getAllCves() const
Get all stored CVE numbers.
Definition CveShaMap.h:89
Equality test for string and string_view to be used in containers.
Definition String.h:281
Hash for string and string_view to be used in hashing containers.
Definition String.h:254