Mercurial > pub > ImplabNet
comparison Implab/Formats/StringScanner.cs @ 176:0c3c69fe225b ref20160224
rewritten the text scanner
| author | cin |
|---|---|
| date | Tue, 22 Mar 2016 18:58:40 +0300 |
| parents | |
| children | 76e8f2ba12b8 |
comparison
equal
deleted
inserted
replaced
| 175:96a89dcb4060 | 176:0c3c69fe225b |
|---|---|
| 1 using System; | |
| 2 | |
| 3 namespace Implab.Formats { | |
| 4 public class StringScanner: TextScanner { | |
| 5 const int CHUNK_SIZE = 1024; | |
| 6 | |
| 7 readonly string m_text; | |
| 8 int m_pos; | |
| 9 | |
| 10 public StringScanner(string text) : base(text.Length, text.Length < CHUNK_SIZE ? text.Length : CHUNK_SIZE) { | |
| 11 m_text = text; | |
| 12 Feed(); | |
| 13 } | |
| 14 | |
| 15 protected override int Read(char[] buffer, int offset, int size) { | |
| 16 var actual = size + m_pos > m_text.Length ? m_text.Length - m_pos : size; | |
| 17 | |
| 18 m_text.CopyTo(m_pos,buffer,offset, actual); | |
| 19 | |
| 20 m_pos += actual; | |
| 21 | |
| 22 return actual; | |
| 23 } | |
| 24 } | |
| 25 } | |
| 26 |
