diff options
author | Darren Bane <dbane@tilde.institute> | 2021-01-31 16:21:42 +0000 |
---|---|---|
committer | Darren Bane <dbane@tilde.institute> | 2021-01-31 16:21:42 +0000 |
commit | 6498dfe047b90ac719b9a41d644d9e72ffaa11a4 (patch) | |
tree | e51eb8dc864c5f8c23c60326549ec30f50fbfd39 /dbm.lsp | |
parent | 9dbb4b1c10aa87c1b296752467ec6d6983247aa6 (diff) | |
download | lsp-6498dfe047b90ac719b9a41d644d9e72ffaa11a4.tar.gz |
Some new ISLisp
Diffstat (limited to 'dbm.lsp')
-rw-r--r-- | dbm.lsp | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/dbm.lsp b/dbm.lsp new file mode 100644 index 0000000..52a0a27 --- /dev/null +++ b/dbm.lsp @@ -0,0 +1,27 @@ +;; No package, this is for eisl + +(c-include "<ndbm.h>") + +(defclass <dbm> () (db :accessor db)) + +(defgeneric clearerr (self)) +(defmethod clearerr ((self <dbm>)) + (flet ((clearerr-h (db) + (c-lang "dbm_clearerr(DB);"))) + (clearerr-h (db self)))) + +(defgeneric close (self)) + +(defgeneric delete (self key)) + +(defgeneric open (self openflags)) +(defmethod open ((self <dbm>) file openflags) + (flet ((open-h (file openflags) + (c-lang "res = dbm_open(FILE, OPENFLAGS, MODE);"))) + (setf (db self) (open-h file openflags)))) + +(defgeneric create (self openflags modes)) +(defmethod create ((self <dbm>) file openflags modes) + (flet ((open-h (file openflags modes) + (c-lang "res = dbm_open(FILE, OPENFLAGS, MODE);"))) + (setf (db self) (open-h file openflags modes)))) |