#pragma once #include "types.h" #include namespace utils { enum class version_type : uint { pre_alpha, alpha, beta, release_candidate, release }; std::string to_string(version_type type); class version { uint m_hi; uint m_mid; uint m_lo; version_type m_type = version_type::release; uint m_type_index = 1; const char* m_postfix; public: constexpr version(uint hi, uint mid, uint lo, version_type type, uint type_index, const char* postfix) : m_hi(hi) , m_mid(mid) , m_lo(lo) , m_type(type) , m_type_index(type_index) , m_postfix(postfix) { } uint hi() const { return m_hi; } uint mid() const { return m_mid; } uint lo() const { return m_lo; } version_type type() const { return m_type; } std::string postfix() const { return m_postfix; } uint type_index() const { return m_type_index; } uint to_hex() const; std::string to_string() const; }; }