// <summary> // Applies <paramref name="action" /> to all scope entries in the current scope region. // </summary> internal void ApplyToScopeEntries(Action <ScopeEntry> action) { Debug.Assert(FirstScopeIndex <= _scopeManager.CurrentScopeIndex, "FirstScopeIndex <= CurrentScopeIndex"); for (var i = FirstScopeIndex; i <= _scopeManager.CurrentScopeIndex; ++i) { foreach (var scopeEntry in _scopeManager.GetScopeByIndex(i)) { action(scopeEntry.Value); } } }
/// <summary> /// Performs scope lookup returning the scope entry and its index. /// </summary> private bool TryScopeLookup(string key, out ScopeEntry scopeEntry, out int scopeIndex) { scopeEntry = null; scopeIndex = -1; for (var i = CurrentScopeIndex; i >= 0; i--) { if (_scopeManager.GetScopeByIndex(i).TryLookup(key, out scopeEntry)) { scopeIndex = i; return(true); } } return(false); }