summaryrefslogtreecommitdiff
path: root/module/tables.m
diff options
context:
space:
mode:
Diffstat (limited to 'module/tables.m')
-rw-r--r--module/tables.m24
1 files changed, 24 insertions, 0 deletions
diff --git a/module/tables.m b/module/tables.m
new file mode 100644
index 00000000..62f589a8
--- /dev/null
+++ b/module/tables.m
@@ -0,0 +1,24 @@
+Tables: module {
+ PATH: con "/dis/lib/tables.dis";
+ Table: adt[T] {
+ items: array of list of (int, T);
+ nilval: T;
+
+ new: fn(nslots: int, nilval: T): ref Table[T];
+ add: fn(t: self ref Table, id: int, x: T): int;
+ del: fn(t: self ref Table, id: int): int;
+ find: fn(t: self ref Table, id: int): T;
+ };
+
+ Strhash: adt[T] {
+ items: array of list of (string, T);
+ nilval: T;
+
+ new: fn(nslots: int, nilval: T): ref Strhash[T];
+ add: fn(t: self ref Strhash, id: string, x: T);
+ del: fn(t: self ref Strhash, id: string);
+ find: fn(t: self ref Strhash, id: string): T;
+ };
+
+ hash: fn(s: string, n: int): int;
+};