diff options
| author | Alex Crichton <alex@alexcrichton.com> | 2013-05-03 13:08:08 -0400 |
|---|---|---|
| committer | Alex Crichton <alex@alexcrichton.com> | 2013-05-10 02:46:19 -0400 |
| commit | a87db3e2cd0aaaa513b13391d3ad21861d16e480 (patch) | |
| tree | 2cd1cf8eebc5276d0aa12a6d458bd3703b2e08ff /src/libstd | |
| parent | 5eb6d19803ebcb5279f8a42b584a4d81152fa82d (diff) | |
| download | rust-a87db3e2cd0aaaa513b13391d3ad21861d16e480.tar.gz rust-a87db3e2cd0aaaa513b13391d3ad21861d16e480.zip | |
rustc: Use the new `for` protocol
Diffstat (limited to 'src/libstd')
| -rw-r--r-- | src/libstd/ebml.rs | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/libstd/ebml.rs b/src/libstd/ebml.rs index 5e4f708f52f..8bf81a090cf 100644 --- a/src/libstd/ebml.rs +++ b/src/libstd/ebml.rs @@ -199,6 +199,7 @@ pub mod reader { } } + #[cfg(stage0)] pub fn docs(d: Doc, it: &fn(uint, Doc) -> bool) { let mut pos = d.start; while pos < d.end { @@ -211,7 +212,22 @@ pub mod reader { } } } + #[cfg(not(stage0))] + pub fn docs(d: Doc, it: &fn(uint, Doc) -> bool) -> bool { + let mut pos = d.start; + while pos < d.end { + let elt_tag = vuint_at(*d.data, pos); + let elt_size = vuint_at(*d.data, elt_tag.next); + pos = elt_size.next + elt_size.val; + let doc = Doc { data: d.data, start: elt_size.next, end: pos }; + if !it(elt_tag.val, doc) { + return false; + } + } + return true; + } + #[cfg(stage0)] pub fn tagged_docs(d: Doc, tg: uint, it: &fn(Doc) -> bool) { let mut pos = d.start; while pos < d.end { @@ -227,6 +243,23 @@ pub mod reader { } } } + #[cfg(not(stage0))] + pub fn tagged_docs(d: Doc, tg: uint, it: &fn(Doc) -> bool) -> bool { + let mut pos = d.start; + while pos < d.end { + let elt_tag = vuint_at(*d.data, pos); + let elt_size = vuint_at(*d.data, elt_tag.next); + pos = elt_size.next + elt_size.val; + if elt_tag.val == tg { + let doc = Doc { data: d.data, start: elt_size.next, + end: pos }; + if !it(doc) { + return false; + } + } + } + return true; + } pub fn doc_data(d: Doc) -> ~[u8] { vec::slice::<u8>(*d.data, d.start, d.end).to_vec() |
