diff options
author | Jesse Plamondon-Willard <github@jplamondonw.com> | 2017-10-14 11:44:02 -0400 |
---|---|---|
committer | Jesse Plamondon-Willard <github@jplamondonw.com> | 2017-10-14 11:44:02 -0400 |
commit | 79118316065a01322d8ea12a14589ec016794c32 (patch) | |
tree | 7a26668a66ea0630a2b9367ac820fe7a6d99ac77 /src/StardewModdingAPI/Framework/Utilities | |
parent | af1a2bde8219c5d4b8660b13702725626a4a5647 (diff) | |
parent | 8aec1eff99858716afe7b8604b512181f78c214f (diff) | |
download | SMAPI-79118316065a01322d8ea12a14589ec016794c32.tar.gz SMAPI-79118316065a01322d8ea12a14589ec016794c32.tar.bz2 SMAPI-79118316065a01322d8ea12a14589ec016794c32.zip |
Merge branch 'develop' into stable
Diffstat (limited to 'src/StardewModdingAPI/Framework/Utilities')
-rw-r--r-- | src/StardewModdingAPI/Framework/Utilities/ContextHash.cs | 62 | ||||
-rw-r--r-- | src/StardewModdingAPI/Framework/Utilities/Countdown.cs | 44 |
2 files changed, 0 insertions, 106 deletions
diff --git a/src/StardewModdingAPI/Framework/Utilities/ContextHash.cs b/src/StardewModdingAPI/Framework/Utilities/ContextHash.cs deleted file mode 100644 index 0d8487bb..00000000 --- a/src/StardewModdingAPI/Framework/Utilities/ContextHash.cs +++ /dev/null @@ -1,62 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; - -namespace StardewModdingAPI.Framework.Utilities -{ - /// <summary>A <see cref="HashSet{T}"/> wrapper meant for tracking recursive contexts.</summary> - /// <typeparam name="T">The key type.</typeparam> - internal class ContextHash<T> : HashSet<T> - { - /********* - ** Public methods - *********/ - /// <summary>Construct an instance.</summary> - public ContextHash() { } - - /// <summary>Construct an instance.</summary> - /// <param name="comparer">The <see cref="IEqualityComparer{T}"/> implementation to use when comparing values in the set, or <c>null</c> to use the default comparer for the set type.</param> - public ContextHash(IEqualityComparer<T> comparer) - : base(comparer) { } - - /// <summary>Add a key while an action is in progress, and remove it when it completes.</summary> - /// <param name="key">The key to add.</param> - /// <param name="action">The action to perform.</param> - /// <exception cref="InvalidOperationException">The specified key is already added.</exception> - public void Track(T key, Action action) - { - if(this.Contains(key)) - throw new InvalidOperationException($"Can't track context for key {key} because it's already added."); - - this.Add(key); - try - { - action(); - } - finally - { - this.Remove(key); - } - } - - /// <summary>Add a key while an action is in progress, and remove it when it completes.</summary> - /// <typeparam name="TResult">The value type returned by the method.</typeparam> - /// <param name="key">The key to add.</param> - /// <param name="action">The action to perform.</param> - public TResult Track<TResult>(T key, Func<TResult> action) - { - if (this.Contains(key)) - throw new InvalidOperationException($"Can't track context for key {key} because it's already added."); - - this.Add(key); - try - { - return action(); - } - finally - { - this.Remove(key); - } - } - } -} diff --git a/src/StardewModdingAPI/Framework/Utilities/Countdown.cs b/src/StardewModdingAPI/Framework/Utilities/Countdown.cs deleted file mode 100644 index 921a35ce..00000000 --- a/src/StardewModdingAPI/Framework/Utilities/Countdown.cs +++ /dev/null @@ -1,44 +0,0 @@ -namespace StardewModdingAPI.Framework.Utilities -{ - /// <summary>Counts down from a baseline value.</summary> - internal class Countdown - { - /********* - ** Accessors - *********/ - /// <summary>The initial value from which to count down.</summary> - public int Initial { get; } - - /// <summary>The current value.</summary> - public int Current { get; private set; } - - - /********* - ** Public methods - *********/ - /// <summary>Construct an instance.</summary> - /// <param name="initial">The initial value from which to count down.</param> - public Countdown(int initial) - { - this.Initial = initial; - this.Current = initial; - } - - /// <summary>Reduce the current value by one.</summary> - /// <returns>Returns whether the value was decremented (i.e. wasn't already zero).</returns> - public bool Decrement() - { - if (this.Current <= 0) - return false; - - this.Current--; - return true; - } - - /// <summary>Restart the countdown.</summary> - public void Reset() - { - this.Current = this.Initial; - } - } -} |