1*46439007SCharles.ForsythHash: module{ 2*46439007SCharles.Forsyth PATH: con "/dis/lib/hash.dis"; 3*46439007SCharles.Forsyth fun1, fun2: fn(s:string,n:int):int; 4*46439007SCharles.Forsyth 5*46439007SCharles.Forsyth HashVal: adt{ 6*46439007SCharles.Forsyth i: int; 7*46439007SCharles.Forsyth r: real; 8*46439007SCharles.Forsyth s: string; 9*46439007SCharles.Forsyth }; 10*46439007SCharles.Forsyth HashNode: adt{ 11*46439007SCharles.Forsyth key:string; 12*46439007SCharles.Forsyth val:ref HashVal; # insert() can update contents 13*46439007SCharles.Forsyth }; 14*46439007SCharles.Forsyth HashTable: adt{ 15*46439007SCharles.Forsyth a: array of list of HashNode; 16*46439007SCharles.Forsyth find: fn(h:self ref HashTable, key:string):ref HashVal; 17*46439007SCharles.Forsyth insert: fn(h:self ref HashTable, key:string, val:HashVal); 18*46439007SCharles.Forsyth delete: fn(h:self ref HashTable, key:string); 19*46439007SCharles.Forsyth all: fn(h:self ref HashTable): list of HashNode; 20*46439007SCharles.Forsyth }; 21*46439007SCharles.Forsyth new: fn(size:int):ref HashTable; 22*46439007SCharles.Forsyth}; 23*46439007SCharles.Forsyth 24