Skip to content

Commit 0093521

Browse files
committed
Shift writer_util to a derived impl attached to the writer trait
1 parent ff00edb commit 0093521

File tree

3 files changed

+46
-14
lines changed

3 files changed

+46
-14
lines changed

src/libcore/io.rs

Lines changed: 36 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -533,7 +533,34 @@ fn u64_from_be_bytes(data: ~[u8], start: uint, size: uint) -> u64 {
533533
return val;
534534
}
535535

536-
impl writer_util for writer {
536+
// FIXME: #3048 combine trait+impl (or just move these to
537+
// default methods on writer)
538+
trait writer_util {
539+
fn write_char(ch: char);
540+
fn write_str(s: &str);
541+
fn write_line(s: &str);
542+
fn write_int(n: int);
543+
fn write_uint(n: uint);
544+
fn write_le_uint(n: uint);
545+
fn write_le_int(n: int);
546+
fn write_be_uint(n: uint);
547+
fn write_be_int(n: int);
548+
fn write_be_u64(n: u64);
549+
fn write_be_u32(n: u32);
550+
fn write_be_u16(n: u16);
551+
fn write_be_i64(n: i64);
552+
fn write_be_i32(n: i32);
553+
fn write_be_i16(n: i16);
554+
fn write_le_u64(n: u64);
555+
fn write_le_u32(n: u32);
556+
fn write_le_u16(n: u16);
557+
fn write_le_i64(n: i64);
558+
fn write_le_i32(n: i32);
559+
fn write_le_i16(n: i16);
560+
fn write_u8(n: u8);
561+
}
562+
563+
impl<T:writer> T : writer_util {
537564
fn write_char(ch: char) {
538565
if ch as uint < 128u {
539566
self.write(&[ch as u8]);
@@ -552,17 +579,17 @@ impl writer_util for writer {
552579
fn write_uint(n: uint) {
553580
uint::to_str_bytes(false, n, 10u, |buf| self.write(buf))
554581
}
555-
fn write_le_uint(n: uint, size: uint) {
556-
u64_to_le_bytes(n as u64, size, |v| self.write(v))
582+
fn write_le_uint(n: uint) {
583+
u64_to_le_bytes(n as u64, uint::bytes, |v| self.write(v))
557584
}
558-
fn write_le_int(n: int, size: uint) {
559-
u64_to_le_bytes(n as u64, size, |v| self.write(v))
585+
fn write_le_int(n: int) {
586+
u64_to_le_bytes(n as u64, int::bytes, |v| self.write(v))
560587
}
561-
fn write_be_uint(n: uint, size: uint) {
562-
u64_to_be_bytes(n as u64, size, |v| self.write(v))
588+
fn write_be_uint(n: uint) {
589+
u64_to_be_bytes(n as u64, uint::bytes, |v| self.write(v))
563590
}
564-
fn write_be_int(n: int, size: uint) {
565-
u64_to_be_bytes(n as u64, size, |v| self.write(v))
591+
fn write_be_int(n: int) {
592+
u64_to_be_bytes(n as u64, int::bytes, |v| self.write(v))
566593
}
567594
fn write_be_u64(n: u64) {
568595
u64_to_be_bytes(n, 8u, |v| self.write(v))

src/libsyntax/print/pp.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -411,7 +411,7 @@ impl printer for printer {
411411
{offset: 0, pbreak: broken(inconsistent)}
412412
}
413413
}
414-
fn write_str(s: ~str) {
414+
fn print_str(s: ~str) {
415415
while self.pending_indentation > 0 {
416416
self.out.write_str(~" ");
417417
self.pending_indentation -= 1;
@@ -471,7 +471,7 @@ impl printer for printer {
471471
assert (L == len);
472472
// assert L <= space;
473473
self.space -= len;
474-
self.write_str(*s);
474+
self.print_str(*s);
475475
}
476476
EOF {
477477
// EOF should never get here.

src/rustc/metadata/encoder.rs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -955,23 +955,28 @@ fn encode_index<T>(ebml_w: ebml::writer, buckets: ~[@~[entry<T>]],
955955
ebml_w.start_tag(tag_index_buckets_bucket);
956956
for vec::each(*bucket) |elt| {
957957
ebml_w.start_tag(tag_index_buckets_bucket_elt);
958-
writer.write_be_uint(elt.pos, 4u);
958+
assert elt.pos < (u32::max_value as uint);
959+
writer.write_be_u32(elt.pos as u32);
959960
write_fn(writer, elt.val);
960961
ebml_w.end_tag();
961962
}
962963
ebml_w.end_tag();
963964
}
964965
ebml_w.end_tag();
965966
ebml_w.start_tag(tag_index_table);
966-
for bucket_locs.each |pos| { writer.write_be_uint(pos, 4u); }
967+
for bucket_locs.each |pos| {
968+
assert pos < (u32::max_value as uint);
969+
writer.write_be_u32(pos as u32);
970+
}
967971
ebml_w.end_tag();
968972
ebml_w.end_tag();
969973
}
970974

971975
fn write_str(writer: io::writer, &&s: ~str) { writer.write_str(s); }
972976

973977
fn write_int(writer: io::writer, &&n: int) {
974-
writer.write_be_uint(n as uint, 4u);
978+
assert n < (u32::max_value as int);
979+
writer.write_be_u32(n as u32);
975980
}
976981

977982
fn encode_meta_item(ebml_w: ebml::writer, mi: meta_item) {

0 commit comments

Comments
 (0)