diff options
Diffstat (limited to 'src/libcore')
| -rw-r--r-- | src/libcore/iter.rs | 1 | ||||
| -rw-r--r-- | src/libcore/path.rs | 3 | ||||
| -rw-r--r-- | src/libcore/pipes.rs | 23 | ||||
| -rw-r--r-- | src/libcore/reflect.rs | 7 |
4 files changed, 22 insertions, 12 deletions
diff --git a/src/libcore/iter.rs b/src/libcore/iter.rs index d318c279999..37491ae0b71 100644 --- a/src/libcore/iter.rs +++ b/src/libcore/iter.rs @@ -37,6 +37,7 @@ pub trait Times { pub trait CopyableIter<A:Copy> { pure fn filter_to_vec(pred: fn(a: A) -> bool) -> ~[A]; pure fn map_to_vec<B>(op: fn(v: A) -> B) -> ~[B]; + pure fn flat_map_to_vec<B:Copy,IB: BaseIter<B>>(op: fn(A) -> IB) -> ~[B]; pure fn to_vec() -> ~[A]; pure fn find(p: fn(a: A) -> bool) -> Option<A>; } diff --git a/src/libcore/path.rs b/src/libcore/path.rs index f0fefee9d06..a9a99565cf1 100644 --- a/src/libcore/path.rs +++ b/src/libcore/path.rs @@ -44,6 +44,9 @@ pub trait GenericPath { pure fn with_filestem((&str)) -> self; pure fn with_filetype((&str)) -> self; + pure fn dir_path() -> self; + pure fn file_path() -> self; + pure fn push((&str)) -> self; pure fn push_rel((&self)) -> self; pure fn push_many((&[~str])) -> self; diff --git a/src/libcore/pipes.rs b/src/libcore/pipes.rs index 561732057cf..a06564a470e 100644 --- a/src/libcore/pipes.rs +++ b/src/libcore/pipes.rs @@ -811,13 +811,22 @@ pub struct RecvPacketBuffered<T: Send, Tbuffer: Send> { } } -impl<T: Send, Tbuffer: Send> RecvPacketBuffered<T, Tbuffer> : Selectable { +impl<T: Send, Tbuffer: Send> RecvPacketBuffered<T, Tbuffer> { fn unwrap() -> *Packet<T> { let mut p = None; p <-> self.p; option::unwrap(move p) } + fn reuse_buffer() -> BufferResource<Tbuffer> { + //error!("recv reuse_buffer"); + let mut tmp = None; + tmp <-> self.buffer; + option::unwrap(move tmp) + } +} + +impl<T: Send, Tbuffer: Send> RecvPacketBuffered<T, Tbuffer> : Selectable { pure fn header() -> *PacketHeader { match self.p { Some(packet) => unsafe { @@ -829,13 +838,6 @@ impl<T: Send, Tbuffer: Send> RecvPacketBuffered<T, Tbuffer> : Selectable { None => fail ~"packet already consumed" } } - - fn reuse_buffer() -> BufferResource<Tbuffer> { - //error!("recv reuse_buffer"); - let mut tmp = None; - tmp <-> self.buffer; - option::unwrap(move tmp) - } } pub fn RecvPacketBuffered<T: Send, Tbuffer: Send>(p: *Packet<T>) @@ -1046,7 +1048,7 @@ pub fn PortSet<T: Send>() -> PortSet<T>{ } } -impl<T: Send> PortSet<T> : Recv<T> { +impl<T: Send> PortSet<T> { fn add(port: pipes::Port<T>) { self.ports.push(move port) @@ -1057,6 +1059,9 @@ impl<T: Send> PortSet<T> : Recv<T> { self.add(move po); move ch } +} + +impl<T: Send> PortSet<T> : Recv<T> { fn try_recv() -> Option<T> { let mut result = None; diff --git a/src/libcore/reflect.rs b/src/libcore/reflect.rs index 3fa37a2fb8e..d9b18947779 100644 --- a/src/libcore/reflect.rs +++ b/src/libcore/reflect.rs @@ -34,9 +34,7 @@ pub fn MovePtrAdaptor<V: TyVisitor MovePtr>(v: V) -> MovePtrAdaptor<V> { MovePtrAdaptor { inner: move v } } -/// Abstract type-directed pointer-movement using the MovePtr trait -impl<V: TyVisitor MovePtr> MovePtrAdaptor<V>: TyVisitor { - +impl<V: TyVisitor MovePtr> MovePtrAdaptor<V> { #[inline(always)] fn bump(sz: uint) { do self.inner.move_ptr() |p| { @@ -60,7 +58,10 @@ impl<V: TyVisitor MovePtr> MovePtrAdaptor<V>: TyVisitor { fn bump_past<T>() { self.bump(sys::size_of::<T>()); } +} +/// Abstract type-directed pointer-movement using the MovePtr trait +impl<V: TyVisitor MovePtr> MovePtrAdaptor<V>: TyVisitor { fn visit_bot() -> bool { self.align_to::<()>(); if ! self.inner.visit_bot() { return false; } |
