##// END OF EJS Templates
added Safe.DispatchEvent() a legacy equivalent for '?.Invoke()'...
added Safe.DispatchEvent() a legacy equivalent for '?.Invoke()' added Safe.Dispose(IEnumerable) added PromiseExtensions.CancellationPoint to add a cancellation point to the chain of promises added IPromise<T> PromiseExtensions.Then<T>(this IPromise<T> that, Action<T> success) overloads added PromiseExtensions.Error() overloads to handle a error or(and) a cancellation

File last commit:

r183:4f82e0f161c3 ref20160224
r207:558f34b2fb50 v2
Show More
ReaderScanner.cs
30 lines | 845 B | text/x-csharp | CSharpLexer
cin
rewritten the text scanner
r176 using System;
using System.IO;
namespace Implab.Formats {
public class ReaderScanner: TextScanner {
cin
fixed DFA optimization, JSON is fully functional
r183 const int CHUNK_SIZE = 1024*4;
cin
rewritten the text scanner
r176 const int BUFFER_MAX = CHUNK_SIZE*1024;
readonly TextReader m_reader;
public ReaderScanner(TextReader reader, int limit, int chunk) : base(limit, chunk) {
Safe.ArgumentNotNull(reader, "reader");
m_reader = reader;
}
public ReaderScanner(TextReader reader) : this(reader, BUFFER_MAX, CHUNK_SIZE) {
}
protected override int Read(char[] buffer, int offset, int size) {
return m_reader.Read(buffer, offset, size);
}
protected override void Dispose(bool disposing) {
if (disposing)
Safe.Dispose(m_reader);
base.Dispose(disposing);
}
}
}