rustc: Look up names in "use"d crates
This commit is contained in:
parent
661f1c541e
commit
94c19a18ae
4 changed files with 138 additions and 11 deletions
|
|
@ -6,7 +6,7 @@ import option.none;
|
|||
import option.some;
|
||||
|
||||
type ebml_tag = rec(uint id, uint size);
|
||||
type ebml_state = rec(ebml_tag ebml_tag, uint pos);
|
||||
type ebml_state = rec(ebml_tag ebml_tag, uint tag_pos, uint data_pos);
|
||||
|
||||
// TODO: When we have module renaming, make "reader" and "writer" separate
|
||||
// modules within this file.
|
||||
|
|
@ -56,8 +56,10 @@ impure fn create_reader(&io.reader r) -> reader {
|
|||
impure fn bytes_left(&reader r) -> uint {
|
||||
auto pos = r.reader.tell();
|
||||
alt (_vec.last[ebml_state](r.states)) {
|
||||
case (none[ebml_state]) { ret r.size - pos; }
|
||||
case (some[ebml_state](?st)) { ret st.pos + st.ebml_tag.size - pos; }
|
||||
case (none[ebml_state]) { ret r.size - pos; }
|
||||
case (some[ebml_state](?st)) {
|
||||
ret st.data_pos + st.ebml_tag.size - pos;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -69,9 +71,10 @@ impure fn read_tag(&reader r) -> ebml_tag {
|
|||
|
||||
// Reads a tag and moves the cursor to its first child or data segment.
|
||||
impure fn move_to_first_child(&reader r) {
|
||||
auto pos = r.reader.tell();
|
||||
auto tag_pos = r.reader.tell();
|
||||
auto t = read_tag(r);
|
||||
r.states += vec(rec(ebml_tag=t, pos=pos));
|
||||
auto data_pos = r.reader.tell();
|
||||
r.states += vec(rec(ebml_tag=t, tag_pos=tag_pos, data_pos=data_pos));
|
||||
}
|
||||
|
||||
// Reads a tag and skips over its contents, moving to its next sibling.
|
||||
|
|
@ -84,7 +87,7 @@ impure fn move_to_next_sibling(&reader r) {
|
|||
impure fn move_to_parent(&reader r) {
|
||||
check (_vec.len[ebml_state](r.states) > 0u);
|
||||
auto st = _vec.pop[ebml_state](r.states);
|
||||
r.reader.seek(st.pos as int, io.seek_set);
|
||||
r.reader.seek(st.tag_pos as int, io.seek_set);
|
||||
}
|
||||
|
||||
// Reads the data segment of a tag.
|
||||
|
|
|
|||
|
|
@ -188,6 +188,11 @@ fn file_reader(str path) -> reader {
|
|||
ret new_reader(FILE_buf_reader(f, true));
|
||||
}
|
||||
|
||||
// FIXME: Remove me once objects are exported.
|
||||
fn new_reader_(buf_reader bufr) -> reader {
|
||||
ret new_reader(bufr);
|
||||
}
|
||||
|
||||
|
||||
// Byte buffer readers
|
||||
|
||||
|
|
@ -224,6 +229,10 @@ state obj byte_buf_reader(byte_buf bbuf) {
|
|||
impure fn tell() -> uint { ret bbuf.pos; }
|
||||
}
|
||||
|
||||
fn new_byte_buf_reader(vec[u8] buf) -> byte_buf_reader {
|
||||
ret byte_buf_reader(@rec(buf=buf, mutable pos=0u));
|
||||
}
|
||||
|
||||
|
||||
// Writing
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue