#pragma once | |
#include <string> | |
namespace minimum_ship_level | |
{ | |
/** @brief Version components */ | |
struct Version | |
{ | |
uint8_t major; | |
uint8_t minor; | |
uint8_t rev; | |
}; | |
/** @brief Verify if the current BMC version meets the min ship level | |
* @return true if the verification succeeded, false otherwise | |
*/ | |
bool verify(const std::string& versionStr); | |
/** @brief Parse the version components into a struct | |
* @details User passes a version string in regex format (REGEX_BMC_MSL) | |
* at compilation time, this value is break down by parse function to allocate | |
* a struct so it can be compared position by position against the (BMC_MSL) | |
* also defined at compile time. | |
* @param[in] versionStr - The version string to be parsed | |
* @param[out] version - The version struct to be populated | |
*/ | |
void parse(const std::string& versionStr, Version& version); | |
/** @brief Compare the versions provided | |
* @param[in] a - The first version to compare | |
* @param[in] b - The second version to compare | |
* @return 1 if a > b | |
* 0 if a = b | |
* -1 if a < b | |
*/ | |
int compare(const Version& a, const Version& b); | |
} // namespace minimum_ship_level |