libstd: Allow io writer to write mutable arrays

This commit is contained in:
Erick Tryzelaar 2011-12-27 16:38:48 -08:00
parent af41564747
commit 1f0757c684

View File

@ -256,7 +256,7 @@ type buf_writer =
// FIXME: eventually u64 // FIXME: eventually u64
obj { obj {
fn write([u8]); fn write([const u8]);
fn seek(int, seek_style); fn seek(int, seek_style);
fn tell() -> uint; fn tell() -> uint;
fn flush() -> int; fn flush() -> int;
@ -264,7 +264,7 @@ type buf_writer =
}; };
obj FILE_writer(f: os::libc::FILE, res: option::t<@FILE_res>) { obj FILE_writer(f: os::libc::FILE, res: option::t<@FILE_res>) {
fn write(v: [u8]) unsafe { fn write(v: [const u8]) unsafe {
let len = vec::len::<u8>(v); let len = vec::len::<u8>(v);
let vbuf = vec::unsafe::to_ptr::<u8>(v); let vbuf = vec::unsafe::to_ptr::<u8>(v);
let nout = os::libc::fwrite(vbuf, len, 1u, f); let nout = os::libc::fwrite(vbuf, len, 1u, f);
@ -283,7 +283,7 @@ obj FILE_writer(f: os::libc::FILE, res: option::t<@FILE_res>) {
resource fd_res(fd: fd_t) { os::libc::close(fd); } resource fd_res(fd: fd_t) { os::libc::close(fd); }
obj fd_buf_writer(fd: fd_t, res: option::t<@fd_res>) { obj fd_buf_writer(fd: fd_t, res: option::t<@fd_res>) {
fn write(v: [u8]) unsafe { fn write(v: [const u8]) unsafe {
let len = vec::len::<u8>(v); let len = vec::len::<u8>(v);
let count = 0u; let count = 0u;
let vbuf; let vbuf;
@ -351,7 +351,7 @@ type writer =
fn write_char(char); fn write_char(char);
fn write_int(int); fn write_int(int);
fn write_uint(uint); fn write_uint(uint);
fn write_bytes([u8]); fn write_bytes([const u8]);
fn write_le_uint(uint, uint); fn write_le_uint(uint, uint);
fn write_le_int(int, uint); fn write_le_int(int, uint);
fn write_be_uint(uint, uint); fn write_be_uint(uint, uint);
@ -384,7 +384,7 @@ obj new_writer(out: buf_writer) {
} }
fn write_int(n: int) { out.write(str::bytes(int::to_str(n, 10u))); } fn write_int(n: int) { out.write(str::bytes(int::to_str(n, 10u))); }
fn write_uint(n: uint) { out.write(str::bytes(uint::to_str(n, 10u))); } fn write_uint(n: uint) { out.write(str::bytes(uint::to_str(n, 10u))); }
fn write_bytes(bytes: [u8]) { out.write(bytes); } fn write_bytes(bytes: [const u8]) { out.write(bytes); }
fn write_le_uint(n: uint, size: uint) { fn write_le_uint(n: uint, size: uint) {
out.write(uint_to_le_bytes(n, size)); out.write(uint_to_le_bytes(n, size));
} }
@ -435,7 +435,7 @@ type str_writer =
type mutable_byte_buf = @{mutable buf: [mutable u8], mutable pos: uint}; type mutable_byte_buf = @{mutable buf: [mutable u8], mutable pos: uint};
obj byte_buf_writer(buf: mutable_byte_buf) { obj byte_buf_writer(buf: mutable_byte_buf) {
fn write(v: [u8]) { fn write(v: [const u8]) {
// Fast path. // Fast path.
if buf.pos == vec::len(buf.buf) { if buf.pos == vec::len(buf.buf) {