xref: /inferno-os/module/hash.m (revision 46439007cf417cbd9ac8049bb4122c890097a0fa)
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