Stroika Library 3.0d16
 
Loading...
Searching...
No Matches
Version.inl
1/*
2 * Copyright(c) Sophist Solutions, Inc. 1990-2025. All rights reserved
3 */
4
6
7 /*
8 ********************************************************************************
9 *********************************** Version ************************************
10 ********************************************************************************
11 */
12 constexpr Version::Version ()
13 : fMajorVer{0}
14 , fMinorVer{0}
15 , fVerStage{VersionStage::eSTART}
16 , fVerSubStage{0}
17 , fFinalBuild{0}
18 {
19 }
20 constexpr Version::Version (Binary32BitFullVersionType fullVersionNumber)
21 : fMajorVer{static_cast<uint8_t> ((fullVersionNumber >> 24) & 0x8f)}
22 , fMinorVer{static_cast<uint8_t> ((fullVersionNumber >> 16) & 0xff)}
23 , fVerStage{static_cast<VersionStage> ((fullVersionNumber >> 13) & 0x07)}
24 , fVerSubStage{static_cast<uint16_t> ((fullVersionNumber >> 1) & 0xfff)}
25 , fFinalBuild{static_cast<bool> (fullVersionNumber & 1)}
26 {
27 Assert (fVerSubStage < kMaxVersionSubStage); // we got shift/mask right above
28 }
29 constexpr Version::Version (uint8_t majorVer, uint8_t minorVer, VersionStage verStage, uint16_t verSubStage, bool finalBuild)
30 : fMajorVer{majorVer}
31 , fMinorVer{minorVer}
32 , fVerStage{verStage}
33 , fVerSubStage{verSubStage}
34 , fFinalBuild{finalBuild}
35 {
36 // @todo validate arg verSubStage < kMaxVersionSubStage
37 }
38 constexpr Binary32BitFullVersionType Version::AsFullVersionNum () const
39 {
40 // @todo validate arg verSubStage < kMaxVersionSubStage
41 return Stroika_Make_FULL_VERSION (fMajorVer, fMinorVer, ((uint8_t)fVerStage), fVerSubStage, static_cast<int> (fFinalBuild));
42 }
44 {
45 return AsPrettyVersionString ();
46 }
47 constexpr bool Version::operator== (const Version& rhs) const
48 {
49 return make_signed_t<Binary32BitFullVersionType> (AsFullVersionNum ()) == make_signed_t<Binary32BitFullVersionType> (rhs.AsFullVersionNum ());
50 }
51 constexpr strong_ordering Version::operator<=> (const Version& rhs) const
52 {
53 return make_signed_t<Binary32BitFullVersionType> (AsFullVersionNum ()) <=> make_signed_t<Binary32BitFullVersionType> (rhs.AsFullVersionNum ());
54 }
55
56}
#define Stroika_Make_FULL_VERSION(_Major_, _Minor_, _Stage_, _SubStage_, _FinalBuild_)
Definition VersionDefs.h:88
String is like std::u32string, except it is much easier to use, often much more space efficient,...
Definition String.h:201
nonvirtual Characters::String ToString() const
Definition Version.inl:43