1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-19 08:30:25 +02:00
Beef/BeefLibs/corlib/src/Version.bf
2020-05-06 05:31:05 -07:00

76 lines
1.6 KiB
Beef

namespace System
{
struct Version
{
public uint32 Major;
public uint32 Minor;
public uint32 Build = 0;
public uint32 Revision = 0;
public this(uint32 major, uint32 minor)
{
Major = major;
Minor = minor;
}
public this(uint32 major, uint32 minor, uint32 build, uint32 revision)
{
Major = major;
Minor = minor;
Build = build;
Revision = revision;
}
public static int operator<=>(Version lhs, Version rhs)
{
if (lhs.Major != rhs.Major)
if (lhs.Major > rhs.Major)
return 1;
else
return -1;
if (lhs.Minor != rhs.Minor)
if (lhs.Minor > rhs.Minor)
return 1;
else
return -1;
if (lhs.Build != rhs.Build)
if (lhs.Build > rhs.Build)
return 1;
else
return -1;
if (lhs.Revision != rhs.Revision)
if (lhs.Revision > rhs.Revision)
return 1;
else
return -1;
return 0;
}
public bool Check(uint32 major)
{
return Major == major;
}
public bool Check(uint32 major, uint32 minor)
{
return (Major > major) || ((Major == major) && (Minor >= minor));
}
public bool Check(uint32 major, uint32 minor, uint32 build)
{
return (Major > major) || ((Major == major) && (Minor > minor)) ||
((Major == major) && (Minor == minor) && (Build >= build));
}
public bool Check(uint32 major, uint32 minor, uint32 build, uint32 revision)
{
return (Major > major) || ((Major == major) && (Minor > minor)) ||
((Major == major) && (Minor == minor) && (Build > build)) ||
((Major == major) && (Minor == minor) && (Build == build) && (Revision >= revision));
}
}
}