diff options
Diffstat (limited to 'src/comp/syntax')
| -rw-r--r-- | src/comp/syntax/util/interner.rs | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/comp/syntax/util/interner.rs b/src/comp/syntax/util/interner.rs index 9474ddd16d2..7e7a9ca7107 100644 --- a/src/comp/syntax/util/interner.rs +++ b/src/comp/syntax/util/interner.rs @@ -20,6 +20,7 @@ fn mk[@T](hasher: hashfn[T], eqer: eqfn[T]) -> interner[T] { let m = map::mk_hashmap[T, uint](hasher, eqer); ret {map: m, mutable vect: ~[], hasher: hasher, eqer: eqer}; } + fn intern[@T](itr: &interner[T], val: &T) -> uint { alt itr.map.find(val) { some(idx) { ret idx; } @@ -31,5 +32,8 @@ fn intern[@T](itr: &interner[T], val: &T) -> uint { } } } + fn get[T](itr: &interner[T], idx: uint) -> T { ret itr.vect.(idx); } +fn len[T](itr : &interner[T]) -> uint { ret ivec::len(itr.vect); } + |
