internal void Update(TextContentChangedEventArgs e, Lazy<Tokenizer> lazyTokenizer) { lock (_lock) { // Copy on write. No need to copy if no one is using the map. if (_useCount > 0) { _map = _map.Clone(); _useCount = 0; } _map.Update(e, lazyTokenizer); } }
/// <summary> /// Releases tokenization snapshot /// </summary> internal void Release(LineTokenizationMap map) { lock (_lock) { if (_map == map) { if (_useCount == 0) { throw new InvalidOperationException("Line tokenization map is not in use"); } _useCount--; } } }
internal LineTokenizationSnapshot(TokenCache cache, LineTokenizationMap map) { _cache = cache; _map = map; }
internal void Clear() { lock (_lock) { _map = new LineTokenizationMap(); } }