0.9.8.35:
[sbcl.git] / contrib / sb-posix / designator.lisp
index 5094a94..e3c0df7 100644 (file)
@@ -1,27 +1,18 @@
-(in-package :sb-posix-internal)
+(in-package :sb-posix)
+(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"
-                                 (symbol-name name)
-                                 (symbol-name :designator))
-                         #.*package*)))
+        (typename (intern (format nil "~A-~A"
+                                  (symbol-name name)
+                                  (symbol-name :designator))
+                          #.*package*)))
     `(progn
       (eval-when (:compile-toplevel :load-toplevel :execute)
-       (deftype ,typename () ,type)
-       (setf (get ',name 'designator-type) ',result))
+        (deftype ,typename () ,type)
+        (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))
+        (declare (type ,typename ,name))
+        (etypecase ,name
+          ,@conversions)))))
 
-(define-designator sap-or-nil sb-sys:system-area-pointer
-  (null (sb-sys:int-sap 0))
-  (sb-sys:system-area-pointer sap-or-nil))