view Implab/Formats/StringScanner.cs @ 180:c32688129f14 ref20160224

refactoring complete, JSONParser rewritten
author cin
date Thu, 24 Mar 2016 02:30:46 +0300
parents 0c3c69fe225b
children 76e8f2ba12b8
line wrap: on
line source

using System;

namespace Implab.Formats {
    public class StringScanner: TextScanner {
        const int CHUNK_SIZE = 1024;

        readonly string m_text;
        int m_pos;

        public StringScanner(string text) : base(text.Length, text.Length < CHUNK_SIZE ? text.Length : CHUNK_SIZE) {
            m_text = text;
            Feed();
        }

        protected override int Read(char[] buffer, int offset, int size) {
            var actual = size + m_pos > m_text.Length ? m_text.Length - m_pos : size;

            m_text.CopyTo(m_pos,buffer,offset, actual);

            m_pos += actual;

            return actual;
        }
    }
}