X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=contrib%2Fsb-posix%2Fdesignator.lisp;h=b7cd3c3950776d7e921687d0f6a46e7e8e4bee1a;hb=c2dc8ac5336601717af4e7bb09a67c19758181e0;hp=2aa33e276db5cd84d8250960fb42337351f54ec5;hpb=84500b84beb8a03298beaf731d36faee5323b4d5;p=sbcl.git diff --git a/contrib/sb-posix/designator.lisp b/contrib/sb-posix/designator.lisp index 2aa33e2..b7cd3c3 100644 --- a/contrib/sb-posix/designator.lisp +++ b/contrib/sb-posix/designator.lisp @@ -1,4 +1,6 @@ (in-package :sb-posix-internal) +(defvar *designator-types* (make-hash-table :test #'equal)) + (defmacro define-designator (name result &body conversions) (let ((type `(quote (or ,@(mapcar #'car conversions)))) (typename (intern (format nil "~A-~A" @@ -8,17 +10,9 @@ `(progn (eval-when (:compile-toplevel :load-toplevel :execute) (deftype ,typename () ,type) - (setf (get ',name 'designator-type) ',result)) + (setf (gethash ',name *designator-types*) ',result)) (defun ,(intern (symbol-name name) :sb-posix) (,name) (declare (type ,typename ,name)) (etypecase ,name ,@conversions))))) -(define-designator filename c-string - (pathname (namestring (translate-logical-pathname filename))) - (string filename)) - -(define-designator file-descriptor (integer 32) - (sb-impl::file-stream (sb-impl::fd-stream-fd file-descriptor)) - (fixnum file-descriptor)) -