Example #1
0
        /// <summary>
        /// Update Deltas window and Recents for value of current byte.
        /// </summary>
        /// <param name="src">Source buffer.</param>
        /// <param name="position">Position in source buffer.</param>
        /// <param name="window">Deltas window.</param>
        /// <param name="recents">Recents buffer.</param>
        static void Remember(
            ReadOnlySpan <byte> src,
            int position,
            ref RevolvingBufferTracker <int> window,
            Span <int> recents)
        {
            // Updates both Recents and Window.
            var value  = src[position];
            var recent = recents[value] - 1;

            recents[value] = position + 1;
            window.Push(recent);
        }