diff options
author | Jesse Plamondon-Willard <Pathoschild@users.noreply.github.com> | 2019-09-13 18:24:54 -0400 |
---|---|---|
committer | Jesse Plamondon-Willard <Pathoschild@users.noreply.github.com> | 2019-09-13 18:24:54 -0400 |
commit | 6521df7b131924835eb797251c1e956fae0d6e13 (patch) | |
tree | b704dc64b6b6fef72615bac8950d5eff3c80ea89 /src/SMAPI.Toolkit.CoreInterfaces/ISemanticVersion.cs | |
parent | e22a54212182d0adc443ac95bc791e83c90f7e10 (diff) | |
parent | b7b8b001c5c2dc5d2c9fc1347532ca29368c2325 (diff) | |
download | SMAPI-6521df7b131924835eb797251c1e956fae0d6e13.tar.gz SMAPI-6521df7b131924835eb797251c1e956fae0d6e13.tar.bz2 SMAPI-6521df7b131924835eb797251c1e956fae0d6e13.zip |
Merge branch 'develop' into stable
Diffstat (limited to 'src/SMAPI.Toolkit.CoreInterfaces/ISemanticVersion.cs')
-rw-r--r-- | src/SMAPI.Toolkit.CoreInterfaces/ISemanticVersion.cs | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/src/SMAPI.Toolkit.CoreInterfaces/ISemanticVersion.cs b/src/SMAPI.Toolkit.CoreInterfaces/ISemanticVersion.cs new file mode 100644 index 00000000..0a6e5758 --- /dev/null +++ b/src/SMAPI.Toolkit.CoreInterfaces/ISemanticVersion.cs @@ -0,0 +1,68 @@ +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; } + +#if !SMAPI_3_0_STRICT + /// <summary>An optional build tag.</summary> + [Obsolete("Use " + nameof(ISemanticVersion.PrereleaseTag) + " instead")] + string Build { get; } +#endif + + /// <summary>An optional prerelease tag.</summary> + string PrereleaseTag { 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(); + } +} |