54 lines
1.7 KiB
C#
54 lines
1.7 KiB
C#
|
using System;
|
||
|
|
||
|
namespace TLang.Common
|
||
|
{
|
||
|
public class TLangVersion
|
||
|
{
|
||
|
public static TLangVersion Version => new TLangVersion(1,0,0,0);
|
||
|
|
||
|
public int IntegerVersion => Major << 24 | Minor << 16 | Patch << 8 | Build;
|
||
|
|
||
|
public static TLangVersion FromBytes(byte[] data,int offset=0)
|
||
|
{
|
||
|
TLangVersion version=new TLangVersion();
|
||
|
|
||
|
if(offset < data.Length) version.Major = data[offset];
|
||
|
if(offset + 1 < data.Length) version.Minor = data[offset + 1];
|
||
|
if(offset + 2 < data.Length) version.Minor = data[offset + 2];
|
||
|
if(offset + 3 < data.Length) version.Minor = data[offset + 3];
|
||
|
return version;
|
||
|
}
|
||
|
public TLangVersion() : this(1,0,0,0)
|
||
|
{
|
||
|
|
||
|
}
|
||
|
public TLangVersion(byte major,byte minor,byte patch,byte build)
|
||
|
{
|
||
|
Major =major;
|
||
|
Minor = minor;
|
||
|
Patch = patch;
|
||
|
Build = build;
|
||
|
}
|
||
|
public TLangVersion(byte major,byte minor) : this(major,minor,0,0)
|
||
|
{
|
||
|
|
||
|
}
|
||
|
public static explicit operator Version(TLangVersion version)
|
||
|
{
|
||
|
return new Version(version.Major,version.Minor,version.Patch,version.Build);
|
||
|
}
|
||
|
public static explicit operator TLangVersion(Version version)
|
||
|
{
|
||
|
return new TLangVersion((byte)version.Major,(byte)version.Minor,(byte)version.Build,(byte)version.Revision);
|
||
|
}
|
||
|
public byte Major {get;set;}
|
||
|
public byte Minor {get;set;}
|
||
|
|
||
|
public byte Patch {get;set;}
|
||
|
public byte Build {get;set;}
|
||
|
public override string ToString()
|
||
|
{
|
||
|
return $"{Major}.{Minor}.{Patch}.{Build}";
|
||
|
}
|
||
|
}
|
||
|
}
|