summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorPatrick Walton <pcwalton@mimiga.net>2012-09-20 11:17:15 -0700
committerPatrick Walton <pcwalton@mimiga.net>2012-09-20 11:18:22 -0700
commit5cd9d4d9dd31f3b575d6975e574eb49df39e936a (patch)
tree1019e7de09032063fa5b1103001a2baaab101be4 /src
parentd6e731d823795104940229a191d956bf02a7100c (diff)
downloadrust-5cd9d4d9dd31f3b575d6975e574eb49df39e936a.tar.gz
rust-5cd9d4d9dd31f3b575d6975e574eb49df39e936a.zip
libcore: Make BytesWriters not require shared boxes.
Diffstat (limited to 'src')
-rw-r--r--src/libcore/io.rs16
-rw-r--r--src/rustc/metadata/encoder.rs2
2 files changed, 13 insertions, 5 deletions
diff --git a/src/libcore/io.rs b/src/libcore/io.rs
index e5a20909b7f..fab125c8d68 100644
--- a/src/libcore/io.rs
+++ b/src/libcore/io.rs
@@ -687,7 +687,7 @@ struct BytesWriter {
     mut pos: uint,
 }
 
-impl @BytesWriter: Writer {
+impl BytesWriter: Writer {
     fn write(v: &[const u8]) {
         do self.buf.swap |buf| {
             let mut buf <- buf;
@@ -716,12 +716,20 @@ impl @BytesWriter: Writer {
     fn get_type() -> WriterType { File }
 }
 
-fn BytesWriter() -> @BytesWriter {
-    @BytesWriter { buf: DVec(), mut pos: 0u }
+impl @BytesWriter : Writer {
+    fn write(v: &[const u8]) { (*self).write(v) }
+    fn seek(offset: int, whence: SeekStyle) { (*self).seek(offset, whence) }
+    fn tell() -> uint { (*self).tell() }
+    fn flush() -> int { (*self).flush() }
+    fn get_type() -> WriterType { (*self).get_type() }
+}
+
+fn BytesWriter() -> BytesWriter {
+    BytesWriter { buf: DVec(), mut pos: 0u }
 }
 
 fn with_bytes_writer(f: fn(Writer)) -> ~[u8] {
-    let wr = BytesWriter();
+    let wr = @BytesWriter();
     f(wr as Writer);
     wr.buf.check_out(|buf| buf)
 }
diff --git a/src/rustc/metadata/encoder.rs b/src/rustc/metadata/encoder.rs
index 1b9fc64dd86..a45f2580364 100644
--- a/src/rustc/metadata/encoder.rs
+++ b/src/rustc/metadata/encoder.rs
@@ -1093,7 +1093,7 @@ const metadata_encoding_version : &[u8] = &[0x72, //'r' as u8,
                                             0, 0, 0, 1 ];
 
 fn encode_metadata(parms: encode_parms, crate: @crate) -> ~[u8] {
-    let wr = io::BytesWriter();
+    let wr = @io::BytesWriter();
     let stats =
         {mut inline_bytes: 0,
          mut attr_bytes: 0,