public bool Split(int pos, out GenericTokenStorage <TTokenType> newToken, ArrayPool <char> pool) { if (pos == 0 || pos == Content.Count) { newToken = default; return(false); } var first = Content[..pos];
protected override void CancelToken(GenericTokenStorage <TTokenType> storage, bool isLast) { if (IsAttached) { //Cannot go backward on a TextReader. throw new NotSupportedException(); } _contentPool.Return(storage.Content.Array); }
protected override bool TryMoveToNextToken(out GenericTokenStorage <TTokenType> lastAsStorage) { var lastContent = _contentPool.Rent(_buffer.Content.Length); var lastLength = _buffer.Content.Length; _buffer.Content.CopyTo(lastContent); var type = _type; if (ReadInternal()) { lastAsStorage = new() { Content = new(lastContent, 0, lastLength), Type = type }; return(true); } else { _contentPool.Return(lastContent); lastAsStorage = default; return(false); } }
protected override void ConsumeToken(GenericTokenStorage <TTokenType> storage) { _contentPool.Return(storage.Content.Array); }
protected override bool SplitStorage(int pos, ref GenericTokenStorage <TTokenType> originalToken, out GenericTokenStorage <TTokenType> newToken) { return(originalToken.Split(pos, out newToken, _contentPool)); }
protected override GenericToken <TTokenType> ConvertToken(GenericTokenStorage <TTokenType> storage) { return(new() { Content = storage.Content, Type = storage.Type }); }