summaryrefslogtreecommitdiff
path: root/module/hash.m
blob: 270dd9cd944c6d964cb91daf886638887de9e86c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Hash: module{
	PATH: con "/dis/lib/hash.dis";
	fun1, fun2: fn(s:string,n:int):int;

	HashVal: adt{
		i: int;
		r: real;
		s: string;
	};
	HashNode: adt{
		key:string;
		val:ref HashVal;  # insert() can update contents
	};
	HashTable: adt{
		a:	array of list of HashNode;
		find:	fn(h:self ref HashTable, key:string):ref HashVal;
		insert:	fn(h:self ref HashTable, key:string, val:HashVal);
		delete:	fn(h:self ref HashTable, key:string);
		all:	fn(h:self ref HashTable): list of HashNode;
	};
	new: fn(size:int):ref HashTable;
};