generated/runtime/Parser/TokenReader.cs

/*---------------------------------------------------------------------------------------------
 * Copyright (c) Microsoft Corporation. All rights reserved.
 * Licensed under the MIT License. See License.txt in the project root for license information.
 *--------------------------------------------------------------------------------------------*/
using System;
 
namespace Commvault.Powershell.Runtime.Json
{
    public class TokenReader : IDisposable
    {
        private readonly JsonTokenizer tokenizer;
        private JsonToken current;
 
        internal TokenReader(JsonTokenizer tokenizer)
        {
            this.tokenizer = tokenizer ?? throw new ArgumentNullException(nameof(tokenizer));
        }
 
        internal void Next()
        {
            current = tokenizer.ReadNext();
        }
 
        internal JsonToken Current => current;
 
        internal void Ensure(TokenKind kind, string readerName)
        {
            if (current.Kind != kind)
            {
                throw new ParserException($"Expected {kind} while reading {readerName}). Was {current}.");
            }
        }
 
        public void Dispose()
        {
            tokenizer.Dispose();
        }
    }
}