Skip to content

Commit 0fed78d

Browse files
committed
---
yaml --- r: 39781 b: refs/heads/incoming c: 0274292 h: refs/heads/master i: 39779: e683392 v: v3
1 parent 1522a96 commit 0fed78d

File tree

4 files changed

+71
-68
lines changed

4 files changed

+71
-68
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ refs/heads/try: 3d5418789064fdb463e872a4e651af1c628a3650
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b
88
refs/heads/try2: a810c03263670238bccd64cabb12a23a46e3a278
9-
refs/heads/incoming: 3e7da96fd22faf8587c1717e03a988dce6893bdb
9+
refs/heads/incoming: 0274292bed1c1a109cc46d49e4ac685d10b43bb3
1010
refs/heads/dist-snap: 22efa39382d41b084fde1719df7ae8ce5697d8c9
1111
refs/tags/release-0.2: c870d2dffb391e14efb05aa27898f1f6333a9596
1212
refs/tags/release-0.3: b5f0d0f648d9a6153664837026ba1be43d3e2503

branches/incoming/src/libstd/flatpipes.rs

Lines changed: 8 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -329,7 +329,7 @@ pub impl<T,F:Flattener<T>,C:ByteChan> FlatChan<T, F, C> {
329329
pub mod flatteners {
330330
use ebml;
331331
use flatpipes::{ByteChan, BytePort, Flattener, Unflattener};
332-
use flatpipes::util::BufReader;
332+
use io_util::BufReader;
333333
use json;
334334
use serialize::{Encoder, Decoder, Encodable, Decodable};
335335

@@ -340,7 +340,8 @@ pub mod flatteners {
340340
use core::sys::size_of;
341341
use core::vec;
342342

343-
// XXX: Is copy/send equivalent to pod?
343+
344+
// FIXME #4074: Copy + Owned != POD
344345
pub struct PodUnflattener<T: Copy Owned> {
345346
bogus: ()
346347
}
@@ -625,78 +626,18 @@ pub mod bytepipes {
625626

626627
}
627628

628-
// XXX: This belongs elsewhere
629-
mod util {
630-
use core::io::{Reader, BytesReader};
631-
use core::io;
632-
use core::prelude::*;
633-
634-
pub struct BufReader {
635-
buf: ~[u8],
636-
mut pos: uint
637-
}
638-
639-
pub impl BufReader {
640-
static pub fn new(v: ~[u8]) -> BufReader {
641-
BufReader {
642-
buf: move v,
643-
pos: 0
644-
}
645-
}
646-
647-
priv fn as_bytes_reader<A>(f: &fn(&BytesReader) -> A) -> A {
648-
// Recreating the BytesReader state every call since
649-
// I can't get the borrowing to work correctly
650-
let bytes_reader = BytesReader {
651-
bytes: ::core::util::id::<&[u8]>(self.buf),
652-
pos: self.pos
653-
};
654-
655-
let res = f(&bytes_reader);
656-
657-
// XXX: This isn't correct if f fails
658-
self.pos = bytes_reader.pos;
659-
660-
return move res;
661-
}
662-
}
663-
664-
impl BufReader: Reader {
665-
fn read(&self, bytes: &[mut u8], len: uint) -> uint {
666-
self.as_bytes_reader(|r| r.read(bytes, len) )
667-
}
668-
fn read_byte(&self) -> int {
669-
self.as_bytes_reader(|r| r.read_byte() )
670-
}
671-
fn eof(&self) -> bool {
672-
self.as_bytes_reader(|r| r.eof() )
673-
}
674-
fn seek(&self, offset: int, whence: io::SeekStyle) {
675-
self.as_bytes_reader(|r| r.seek(offset, whence) )
676-
}
677-
fn tell(&self) -> uint {
678-
self.as_bytes_reader(|r| r.tell() )
679-
}
680-
}
681-
682-
}
683-
684629
#[cfg(test)]
685630
mod test {
686631
use core::prelude::*;
687632

688-
// XXX: json::Decoder doesn't work because of problems related to
689-
// its interior pointers
690-
//use DefaultEncoder = json::Encoder;
691-
//use DefaultDecoder = json::Decoder;
692-
use DefaultEncoder = ebml::writer::Encoder;
693-
use DefaultDecoder = ebml::reader::Decoder;
633+
use DefaultEncoder = json::Encoder;
634+
use DefaultDecoder = json::Decoder;
694635

695636
use flatpipes::flatteners::*;
696637
use flatpipes::bytepipes::*;
697638
use flatpipes::pod;
698639
use flatpipes::serial;
699-
use flatpipes::util::BufReader;
640+
use io_util::BufReader;
700641
use flatpipes::{BytePort, FlatChan, FlatPort};
701642
use net::ip;
702643
use net::tcp::TcpSocketBuf;
@@ -787,7 +728,7 @@ mod test {
787728
}
788729
}
789730

790-
// XXX: Networking doesn't work on x86
731+
// FIXME #2064: Networking doesn't work on x86
791732
#[test]
792733
#[cfg(target_arch = "x86_64")]
793734
fn test_pod_tcp_stream() {
@@ -934,7 +875,7 @@ mod test {
934875
use flatpipes::{BytePort, FlatPort};
935876
use flatpipes::flatteners::PodUnflattener;
936877
use flatpipes::pod;
937-
use flatpipes::util::BufReader;
878+
use io_util::BufReader;
938879

939880
use core::io;
940881
use core::pipes;
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
// Copyright 2012 The Rust Project Developers. See the COPYRIGHT
2+
// file at the top-level directory of this distribution and at
3+
// http://rust-lang.org/COPYRIGHT.
4+
//
5+
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6+
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7+
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8+
// option. This file may not be copied, modified, or distributed
9+
// except according to those terms.
10+
11+
use core::io::{Reader, BytesReader};
12+
use core::io;
13+
use core::prelude::*;
14+
15+
pub struct BufReader {
16+
buf: ~[u8],
17+
mut pos: uint
18+
}
19+
20+
pub impl BufReader {
21+
static pub fn new(v: ~[u8]) -> BufReader {
22+
BufReader {
23+
buf: move v,
24+
pos: 0
25+
}
26+
}
27+
28+
priv fn as_bytes_reader<A>(f: &fn(&BytesReader) -> A) -> A {
29+
// Recreating the BytesReader state every call since
30+
// I can't get the borrowing to work correctly
31+
let bytes_reader = BytesReader {
32+
bytes: ::core::util::id::<&[u8]>(self.buf),
33+
pos: self.pos
34+
};
35+
36+
let res = f(&bytes_reader);
37+
38+
// FIXME #4429: This isn't correct if f fails
39+
self.pos = bytes_reader.pos;
40+
41+
return move res;
42+
}
43+
}
44+
45+
impl BufReader: Reader {
46+
fn read(&self, bytes: &[mut u8], len: uint) -> uint {
47+
self.as_bytes_reader(|r| r.read(bytes, len) )
48+
}
49+
fn read_byte(&self) -> int {
50+
self.as_bytes_reader(|r| r.read_byte() )
51+
}
52+
fn eof(&self) -> bool {
53+
self.as_bytes_reader(|r| r.eof() )
54+
}
55+
fn seek(&self, offset: int, whence: io::SeekStyle) {
56+
self.as_bytes_reader(|r| r.seek(offset, whence) )
57+
}
58+
fn tell(&self) -> uint {
59+
self.as_bytes_reader(|r| r.tell() )
60+
}
61+
}

branches/incoming/src/libstd/std.rc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ pub mod uv_global_loop;
5757
pub mod c_vec;
5858
pub mod timer;
5959
pub mod cell;
60+
pub mod io_util;
6061

6162
// Concurrency
6263

0 commit comments

Comments
 (0)