about summary refs log tree commit diff stats
path: root/xdr.lsp
diff options
context:
space:
mode:
Diffstat (limited to 'xdr.lsp')
-rw-r--r--xdr.lsp23
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))