diff options
| author | Marijn Haverbeke <marijnh@gmail.com> | 2011-04-08 16:48:17 +0200 |
|---|---|---|
| committer | Marijn Haverbeke <marijnh@gmail.com> | 2011-04-09 01:05:18 +0200 |
| commit | 094d31f5e40d086a3f1aeb4ff7ea93f59a755d4e (patch) | |
| tree | 703dec3bdbb9df9309f8d7ea198254063170237e /src/lib | |
| parent | cae703c0b1fabbc6ed3f6501198778d18a110fc2 (diff) | |
| download | rust-094d31f5e40d086a3f1aeb4ff7ea93f59a755d4e.tar.gz rust-094d31f5e40d086a3f1aeb4ff7ea93f59a755d4e.zip | |
Make lexer buffer the whole file
This way, it won't have to go through a bunch of calls for each byte fetched.
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/io.rs | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/lib/io.rs b/src/lib/io.rs index 4a3274ac999..61f06795444 100644 --- a/src/lib/io.rs +++ b/src/lib/io.rs @@ -41,6 +41,7 @@ type reader = impure fn read_le_uint(uint size) -> uint; impure fn read_le_int(uint size) -> int; impure fn read_be_uint(uint size) -> uint; + impure fn read_whole_stream() -> vec[u8]; impure fn seek(int offset, seek_style whence); impure fn tell() -> uint; // FIXME: eventually u64 @@ -170,6 +171,13 @@ state obj new_reader(buf_reader rdr) { } ret val; } + impure fn read_whole_stream() -> vec[u8] { + let vec[u8] buf = vec(); + while (!rdr.eof()) { + buf += rdr.read(2048u); + } + ret buf; + } impure fn seek(int offset, seek_style whence) { ret rdr.seek(offset, whence); } |
