Пример #1
0
 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];
Пример #2
0
 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);
 }
Пример #3
0
        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);
            }
        }
Пример #4
0
 protected override void ConsumeToken(GenericTokenStorage <TTokenType> storage)
 {
     _contentPool.Return(storage.Content.Array);
 }
Пример #5
0
 protected override bool SplitStorage(int pos,
                                      ref GenericTokenStorage <TTokenType> originalToken, out GenericTokenStorage <TTokenType> newToken)
 {
     return(originalToken.Split(pos, out newToken, _contentPool));
 }
Пример #6
0
 protected override GenericToken <TTokenType> ConvertToken(GenericTokenStorage <TTokenType> storage)
 {
     return(new() { Content = storage.Content, Type = storage.Type });
 }