diff options
Diffstat (limited to 'xdr.lsp')
-rw-r--r-- | xdr.lsp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/xdr.lsp b/xdr.lsp new file mode 100644 index 0000000..34d9024 --- /dev/null +++ b/xdr.lsp @@ -0,0 +1,23 @@ +(defpackage #:xdr + (:use #:openlisp) + (:export + #:h-to-xdr + #:xdr-to-h)) +(in-package #:xdr) +(defglobal *encode-buf*) +(defun buffer-init (buf op) + (case op + ((encode) (setq *encode-buf* buf)) + ((decode) (setq *decode-buf* buf)) + (t (error "bad op")))) +(defun set-be-x (buf n) + (setf (elt buf 0) (logand (ash -56 n) #xFF)) + (setf (elt buf 1) (logand (ash -48 n) #xFF))) +(defun h-to-xdr (n) + (set-be-x xdr-encode-buf n)) +(provide "xdr") + +(deftest wrt-test () + (buffer-init buffer 'encode) + (i-to-xdr 1234) + (write-file buffer +bytes-per-unit+ fh)) |