4#ifndef _Stroika_Foundation_Common_Version_h_
5#define _Stroika_Foundation_Common_Version_h_ 1
7#include "Stroika/Foundation/StroikaPreComp.h"
34 enum class VersionStage {
36 Alpha = kStroika_Version_Stage_Alpha,
37 Beta = kStroika_Version_Stage_Beta,
38 ReleaseCandidate = kStroika_Version_Stage_ReleaseCandidate,
39 Release = kStroika_Version_Stage_Release,
63 static constexpr uint16_t kMaxVersionSubStage = (1 << 12) - 1;
70 constexpr explicit Version (Binary32BitFullVersionType fullVersionNumber);
71 constexpr Version (uint8_t majorVer, uint8_t minorVer, VersionStage verStage, uint16_t verSubStage,
bool finalBuild =
true);
88 VersionStage fVerStage;
89 uint16_t fVerSubStage;
95 nonvirtual
constexpr Binary32BitFullVersionType AsFullVersionNum ()
const;
122 constexpr bool operator== (
const Version& rhs)
const;
127 constexpr strong_ordering operator<=> (
const Version& rhs)
const;
129 static_assert (totally_ordered<Version>);
138#include "Version.inl"
#define Stroika_Define_Enum_Bounds(FIRST_ITEM, LAST_ITEM)
#define kStroika_Version_Stage_Dev
String is like std::u32string, except it is much easier to use, often much more space efficient,...
static Version FromPrettyVersionString(const Characters::String &prettyVersionString)
nonvirtual Characters::String ToString() const
nonvirtual Characters::String AsMajorMinorString() const
static Version FromWin32Version4DotString(const Characters::String &win32Version4DotString)