mirror of
https://gitea.windcorp.ru/Wind-Corporation/Progressia.git
synced 2025-04-22 00:40:46 +03:00
40 lines
1.2 KiB
C++
40 lines
1.2 KiB
C++
#pragma once
|
|
|
|
#include <config.h>
|
|
#include <cstdlib>
|
|
|
|
namespace progressia::main {
|
|
namespace meta {
|
|
|
|
namespace detail {
|
|
constexpr static uint32_t getVersionNumber(const char *versionStr) {
|
|
uint32_t parts[] = {0, 0, 0};
|
|
std::size_t partCount = sizeof(parts) / sizeof(parts[0]);
|
|
std::size_t currentPart = 0;
|
|
|
|
for (const char *cp = versionStr; *cp != '\0'; cp++) {
|
|
char c = *cp;
|
|
if (c == '.') {
|
|
currentPart++;
|
|
} else if (currentPart < partCount && c >= '0' && c <= '9') {
|
|
parts[currentPart] =
|
|
parts[currentPart] * 10 + static_cast<uint32_t>(c - '0');
|
|
}
|
|
}
|
|
|
|
return (parts[0] << 16) | (parts[1] << 8) | (parts[2] << 0);
|
|
}
|
|
} // namespace detail
|
|
|
|
constexpr const char *NAME = "Progressia";
|
|
constexpr const char *VERSION = _VERSION;
|
|
constexpr const char *BUILD_ID = _BUILD_ID;
|
|
|
|
constexpr uint32_t VERSION_NUMBER = detail::getVersionNumber(_VERSION);
|
|
constexpr uint32_t VERSION_MAJOR = (VERSION_NUMBER & 0xFF0000) >> 16;
|
|
constexpr uint32_t VERSION_MINOR = (VERSION_NUMBER & 0x00FF00) >> 8;
|
|
constexpr uint32_t VERSION_PATCH = (VERSION_NUMBER & 0x0000FF) >> 0;
|
|
|
|
} // namespace meta
|
|
} // namespace progressia::main
|