Skip to content

Commit e3b1471

Browse files
committed
Rewrite io::ByteBuf into a struct
1 parent b18a151 commit e3b1471

File tree

1 file changed

+15
-13
lines changed

1 file changed

+15
-13
lines changed

src/libcore/io.rs

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -297,39 +297,41 @@ pub fn file_reader(path: &Path) -> Result<Reader, ~str> {
297297
}
298298
299299
300-
// Byte buffer readers
301-
302-
pub type ByteBuf = {buf: &[const u8], mut pos: uint};
300+
// Byte readers
301+
pub struct BytesReader {
302+
bytes: &[u8],
303+
mut pos: uint
304+
}
303305
304-
impl ByteBuf: Reader {
305-
fn read(buf: &[mut u8], len: uint) -> uint {
306-
let count = uint::min(len, self.buf.len() - self.pos);
306+
impl BytesReader: Reader {
307+
fn read(bytes: &[mut u8], len: uint) -> uint {
308+
let count = uint::min(len, self.bytes.len() - self.pos);
307309
308-
let view = vec::const_view(self.buf, self.pos, self.buf.len());
309-
vec::bytes::memcpy(buf, view, count);
310+
let view = vec::view(self.bytes, self.pos, self.bytes.len());
311+
vec::bytes::memcpy(bytes, view, count);
310312
311313
self.pos += count;
312314
313315
count
314316
}
315317
fn read_byte() -> int {
316-
if self.pos == self.buf.len() { return -1; }
317-
let b = self.buf[self.pos];
318+
if self.pos == self.bytes.len() { return -1; }
319+
let b = self.bytes[self.pos];
318320
self.pos += 1u;
319321
return b as int;
320322
}
321323
// FIXME (#2738): implement this
322324
fn unread_byte(_byte: int) { error!("Unimplemented: unread_byte"); fail; }
323-
fn eof() -> bool { self.pos == self.buf.len() }
325+
fn eof() -> bool { self.pos == self.bytes.len() }
324326
fn seek(offset: int, whence: SeekStyle) {
325327
let pos = self.pos;
326-
self.pos = seek_in_buf(offset, pos, self.buf.len(), whence);
328+
self.pos = seek_in_buf(offset, pos, self.bytes.len(), whence);
327329
}
328330
fn tell() -> uint { self.pos }
329331
}
330332

331333
pub pure fn with_bytes_reader<t>(bytes: &[u8], f: fn(Reader) -> t) -> t {
332-
f({buf: bytes, mut pos: 0u} as Reader)
334+
f(BytesReader { bytes: bytes, pos: 0u } as Reader)
333335
}
334336

335337
pub fn with_str_reader<T>(s: &str, f: fn(Reader) -> T) -> T {

0 commit comments

Comments
 (0)