Skip to content

Commit

Permalink
add version
Browse files Browse the repository at this point in the history
  • Loading branch information
tyanmahou committed Dec 29, 2023
1 parent 94dcd05 commit 30008a7
Show file tree
Hide file tree
Showing 3 changed files with 72 additions and 0 deletions.
1 change: 1 addition & 0 deletions Re-Abyss/Re-Abyss.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -2116,6 +2116,7 @@
<ClInclude Include="app\utils\TOML\TOMLBindDef.hpp" />
<ClInclude Include="app\utils\TOML\TOMLUtil.hpp" />
<ClInclude Include="app\utils\TrivialString\TrivialString.hpp" />
<ClInclude Include="app\utils\Version\Version.hpp" />
<ClInclude Include="app\utils\Visitor.hpp" />
<ClInclude Include="app\utils\Windows\CustomWindowProc\CustomWindowProc.hpp" />
<ClInclude Include="app\utils\Windows\WindowMenu\WindowMenu.hpp" />
Expand Down
3 changes: 3 additions & 0 deletions Re-Abyss/Re-Abyss.vcxproj.filters
Original file line number Diff line number Diff line change
Expand Up @@ -6038,6 +6038,9 @@
<ClInclude Include="app\stdafx.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="app\utils\Version\Version.hpp">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<Image Include="build\icon.ico">
Expand Down
68 changes: 68 additions & 0 deletions Re-Abyss/app/utils/Version/Version.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
#pragma once
#include <Siv3D/Types.hpp>
#include <Siv3D/StringView.hpp>
#include <Siv3D/Char.hpp>

namespace abyss
{
/// <summary>
/// バージョンクラス
/// </summary>
struct Version
{
constexpr static Version Parse(s3d::StringView version)
{
s3d::uint32 v[4]{ 0, 0, 0, 0 };
bool isDigit = false;
size_t vIndex = 0;
auto it = version.begin();
while (it != version.end()) {
if (s3d::IsDigit(*it))
{
isDigit = true;
v[vIndex] = v[vIndex] * 10 + (*it - U'0');
} else if (isDigit) {
isDigit = false;
++vIndex;
if (vIndex >= 4) {
break;
}
}

++it;
}
return Version{ v[0], v[1], v[2], v[3] };
}

constexpr Version() = default;
constexpr Version(s3d::uint32 _major, s3d::uint32 _minor, s3d::uint32 _build = 0, s3d::uint32 _revision = 0) :
major(_major),
minor(_minor),
build(_build),
revision(_revision)
{}
constexpr Version(const Version& other) :
major(other.major),
minor(other.minor),
build(other.build),
revision(other.revision)
{
}

constexpr Version(s3d::StringView version) :
Version(Parse(version))
{
}

constexpr auto operator<=>(const Version& other)const = default;

s3d::String format(s3d::StringView fmt) const
{
return s3d::Fmt(fmt)(major, minor, build, revision);
}
s3d::uint32 major = 0;
s3d::uint32 minor = 0;
s3d::uint32 build = 0;
s3d::uint32 revision = 0;
};
}

0 comments on commit 30008a7

Please sign in to comment.