diff options
author | Jesse Plamondon-Willard <github@jplamondonw.com> | 2018-06-24 21:29:10 -0400 |
---|---|---|
committer | Jesse Plamondon-Willard <github@jplamondonw.com> | 2018-06-24 21:29:10 -0400 |
commit | 316242eeb2b6b6e711ab98f64c147a59c1d0aab8 (patch) | |
tree | 8266077b34ce63dd09690d97e5e67446f8afc665 /src/StardewModdingAPI.Toolkit.CoreInterfaces/ISemanticVersion.cs | |
parent | 71efadf2322a622bc5a74614b1575d2680a84165 (diff) | |
download | SMAPI-316242eeb2b6b6e711ab98f64c147a59c1d0aab8.tar.gz SMAPI-316242eeb2b6b6e711ab98f64c147a59c1d0aab8.tar.bz2 SMAPI-316242eeb2b6b6e711ab98f64c147a59c1d0aab8.zip |
merge ISemanticVersion interfaces into new project (#532)
Diffstat (limited to 'src/StardewModdingAPI.Toolkit.CoreInterfaces/ISemanticVersion.cs')
-rw-r--r-- | src/StardewModdingAPI.Toolkit.CoreInterfaces/ISemanticVersion.cs | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/src/StardewModdingAPI.Toolkit.CoreInterfaces/ISemanticVersion.cs b/src/StardewModdingAPI.Toolkit.CoreInterfaces/ISemanticVersion.cs new file mode 100644 index 00000000..961ef777 --- /dev/null +++ b/src/StardewModdingAPI.Toolkit.CoreInterfaces/ISemanticVersion.cs @@ -0,0 +1,62 @@ +using System; + +namespace StardewModdingAPI +{ + /// <summary>A semantic version with an optional release tag.</summary> + public interface ISemanticVersion : IComparable<ISemanticVersion>, IEquatable<ISemanticVersion> + { + /********* + ** Accessors + *********/ + /// <summary>The major version incremented for major API changes.</summary> + int MajorVersion { get; } + + /// <summary>The minor version incremented for backwards-compatible changes.</summary> + int MinorVersion { get; } + + /// <summary>The patch version for backwards-compatible bug fixes.</summary> + int PatchVersion { get; } + + /// <summary>An optional build tag.</summary> + string Build { get; } + + + /********* + ** Accessors + *********/ + /// <summary>Whether this is a pre-release version.</summary> + bool IsPrerelease(); + + /// <summary>Get whether this version is older than the specified version.</summary> + /// <param name="other">The version to compare with this instance.</param> + bool IsOlderThan(ISemanticVersion other); + + /// <summary>Get whether this version is older than the specified version.</summary> + /// <param name="other">The version to compare with this instance.</param> + /// <exception cref="FormatException">The specified version is not a valid semantic version.</exception> + bool IsOlderThan(string other); + + /// <summary>Get whether this version is newer than the specified version.</summary> + /// <param name="other">The version to compare with this instance.</param> + bool IsNewerThan(ISemanticVersion other); + + /// <summary>Get whether this version is newer than the specified version.</summary> + /// <param name="other">The version to compare with this instance.</param> + /// <exception cref="FormatException">The specified version is not a valid semantic version.</exception> + bool IsNewerThan(string other); + + /// <summary>Get whether this version is between two specified versions (inclusively).</summary> + /// <param name="min">The minimum version.</param> + /// <param name="max">The maximum version.</param> + bool IsBetween(ISemanticVersion min, ISemanticVersion max); + + /// <summary>Get whether this version is between two specified versions (inclusively).</summary> + /// <param name="min">The minimum version.</param> + /// <param name="max">The maximum version.</param> + /// <exception cref="FormatException">One of the specified versions is not a valid semantic version.</exception> + bool IsBetween(string min, string max); + + /// <summary>Get a string representation of the version.</summary> + string ToString(); + } +} |