Пример #1
0
        internal SyntaxToken LookupToken(
            char[] textBuffer,
            int keyStart,
            int keyLength,
            int hashCode,
            Func <SyntaxToken> createTokenFunction)
        {
            var value = tokenMap.FindItem(textBuffer, keyStart, keyLength, hashCode);

            if (value == null)
            {
#if COLLECT_STATS
                Miss();
#endif
                value = createTokenFunction();
                tokenMap.AddItem(textBuffer, keyStart, keyLength, hashCode, value);
            }
            else
            {
#if COLLECT_STATS
                Hit();
#endif
            }

            return(value);
        }
Пример #2
0
        internal SyntaxTrivia LookupTrivia(
            string key,
            int hashCode,
            Func <SyntaxTrivia> createTriviaFunction)
        {
            var value = _triviaMap.FindItem(key.AsSpan(), hashCode);

            if (value == null)
            {
                value = createTriviaFunction();
                _triviaMap.AddItem(key.AsSpan(), hashCode, value);
            }

            return(value);
        }
Пример #3
0
        internal SyntaxTrivia LookupTrivia(
            char[] textBuffer,
            int keyStart,
            int keyLength,
            int hashCode,
            Func <SyntaxTrivia> createTriviaFunction)
        {
            var value = triviaMap.FindItem(textBuffer, keyStart, keyLength, hashCode);

            if (value == null)
            {
                value = createTriviaFunction();
                triviaMap.AddItem(textBuffer, keyStart, keyLength, hashCode, value);
            }

            return(value);
        }