summaryrefslogtreecommitdiff
path: root/module/dbm.m
diff options
context:
space:
mode:
authorCharles.Forsyth <devnull@localhost>2006-12-22 20:52:35 +0000
committerCharles.Forsyth <devnull@localhost>2006-12-22 20:52:35 +0000
commit46439007cf417cbd9ac8049bb4122c890097a0fa (patch)
tree6fdb25e5f3a2b6d5657eb23b35774b631d4d97e4 /module/dbm.m
parent37da2899f40661e3e9631e497da8dc59b971cbd0 (diff)
20060303-partial
Diffstat (limited to 'module/dbm.m')
-rwxr-xr-xmodule/dbm.m35
1 files changed, 35 insertions, 0 deletions
diff --git a/module/dbm.m b/module/dbm.m
new file mode 100755
index 00000000..17897fd0
--- /dev/null
+++ b/module/dbm.m
@@ -0,0 +1,35 @@
+Dbm: module
+{
+ PATH: con "/dis/lib/dbm.dis";
+
+ Datum: type array of byte;
+
+ Dbf: adt {
+ create: fn(file: string, perm: int): ref Dbf;
+ open: fn(file: string, flags: int): ref Dbf;
+
+ fetch: fn(db: self ref Dbf, key: Datum): Datum;
+ delete: fn(db: self ref Dbf, key: Datum): int;
+ store: fn(db: self ref Dbf, key: Datum, dat: Datum, replace: int): int;
+ firstkey: fn(db: self ref Dbf): Datum;
+ nextkey: fn(db: self ref Dbf, key: Datum): Datum;
+
+ flush: fn(db: self ref Dbf);
+
+ isrdonly: fn(db: self ref Dbf): int;
+
+ dirf: ref Sys->FD; # directory
+ pagf: ref Sys->FD; # page
+ flags: int;
+ maxbno: int; # last `bno' in page file
+ bitno: int;
+ hmask: int;
+ blkno: int; # current page to read/write
+ pagbno: int; # current page in pagbuf
+ pagbuf: array of byte; # [PBLKSIZ]
+ dirbno: int; # current block in dirbuf
+ dirbuf: array of byte; # [DBLKSIZ]
+ };
+
+ init: fn();
+};