diff --git a/library/Support/LazyKeyValuePair.cs b/library/Support/LazyKeyValuePair.cs index 1af2a0d5..f44e1359 100644 --- a/library/Support/LazyKeyValuePair.cs +++ b/library/Support/LazyKeyValuePair.cs @@ -28,6 +28,7 @@ namespace PkmnFoundations.Support set { m_key = value; + m_has_key = true; m_has_value = false; } } @@ -45,29 +46,44 @@ namespace PkmnFoundations.Support set { m_value = value; + m_has_value = true; m_has_key = false; } } public void EvaluateKey() { +#if DEBUG + AssertHelper.Assert(m_has_key || m_has_value); +#endif if (!m_has_key) m_key = m_key_evaluator(m_value); m_has_key = true; } public void Evaluate() { +#if DEBUG + AssertHelper.Assert(m_has_key || m_has_value); +#endif if (!m_has_value) m_value = m_evaluator(m_key); m_has_value = true; } + /// + /// Causes the Key to be lost so it will be recomputed from the Value. + /// public void InvalidateKey() { + if (!m_has_value) throw new InvalidOperationException(); m_has_key = false; } + /// + /// Causes the Value to be lost so it will be recomputed from the Key. + /// public void Invalidate() { + if (!m_has_key) throw new InvalidOperationException(); m_has_value = false; } }