Skip to content

Commit de1513f

Browse files
committed
port interner to use dvec
1 parent b8418da commit de1513f

File tree

1 file changed

+7
-6
lines changed

1 file changed

+7
-6
lines changed

src/librustsyntax/util/interner.rs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,25 +3,26 @@
33
// type, and vice versa.
44
import std::map;
55
import std::map::{hashmap, hashfn, eqfn};
6+
import dvec::{dvec, extensions};
67

78
type interner<T> =
89
{map: hashmap<T, uint>,
9-
mut vect: [T],
10+
vect: dvec<T>,
1011
hasher: hashfn<T>,
1112
eqer: eqfn<T>};
1213

1314
fn mk<T: copy>(hasher: hashfn<T>, eqer: eqfn<T>) -> interner<T> {
1415
let m = map::hashmap::<T, uint>(hasher, eqer);
15-
ret {map: m, mut vect: [], hasher: hasher, eqer: eqer};
16+
ret {map: m, vect: dvec(), hasher: hasher, eqer: eqer};
1617
}
1718

1819
fn intern<T: copy>(itr: interner<T>, val: T) -> uint {
1920
alt itr.map.find(val) {
2021
some(idx) { ret idx; }
2122
none {
22-
let new_idx = vec::len::<T>(itr.vect);
23+
let new_idx = itr.vect.len();
2324
itr.map.insert(val, new_idx);
24-
itr.vect += [val];
25+
itr.vect.push(val);
2526
ret new_idx;
2627
}
2728
}
@@ -32,8 +33,8 @@ fn intern<T: copy>(itr: interner<T>, val: T) -> uint {
3233
// where we first check a pred and then rely on it, ceasing to fail is ok.
3334
pure fn get<T: copy>(itr: interner<T>, idx: uint) -> T {
3435
unchecked {
35-
itr.vect[idx]
36+
itr.vect.get_elt(idx)
3637
}
3738
}
3839

39-
fn len<T>(itr: interner<T>) -> uint { ret vec::len(itr.vect); }
40+
fn len<T>(itr: interner<T>) -> uint { ret itr.vect.len(); }

0 commit comments

Comments
 (0)