Changes required by SBCL 0.9.10
[clg] / glib / proxy.lisp
index 36fbb58..f43b806 100644 (file)
@@ -20,7 +20,7 @@
 ;; TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 ;; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
-;; $Id: proxy.lisp,v 1.37 2006-02-26 16:12:25 espen Exp $
+;; $Id: proxy.lisp,v 1.39 2006-03-06 14:28:03 espen Exp $
 
 (in-package "GLIB")
 
        (let ((boundp (most-specific-slot-value direct-slotds 'boundp)))
         (unless (eq boundp *unbound-marker*)
           (setf (getf initargs :boundp) boundp)))
-       ;; Need this to prevent type expansion in SBCL >= 0.9.8
-       (let ((type (most-specific-slot-value direct-slotds 'type)))
+       ;; This is needed to avoid type expansion in SBCL version >= 0.9.8
+       #+sbcl>=0.9.8
+       (let ((type (most-specific-slot-value direct-slotds #-sbcl>=0.9.10'type #+sbcl>=0.9.10'sb-pcl::%type)))
         (unless (eq type *unbound-marker*)
           (setf (getf initargs :type) type)))
        (nconc initargs (call-next-method))))
@@ -674,19 +675,25 @@ will not be released when the proxy is garbage collected."))
 (deftype inlined (type) type)
 
 (define-type-method size-of ((type inlined))
-  (let ((class (type-expand (second type))))
+  (let ((class (second (type-expand-to 'inlined type))))
     (foreign-size class)))
 
 (define-type-method reader-function ((type inlined))
-  (let ((class (type-expand (second type))))
+  (let ((class (second (type-expand-to 'inlined type))))
     #'(lambda (location &optional (offset 0) weak-p)
        (declare (ignore weak-p))
        (ensure-proxy-instance class 
         (reference-foreign class (sap+ location offset))))))
 
 (define-type-method writer-function ((type inlined))
-  (let ((class (type-expand (second type))))
+  (let ((class (second (type-expand-to 'inlined type))))
     #'(lambda (instance location &optional (offset 0))
        (copy-memory (foreign-location instance) (foreign-size class) (sap+ location offset)))))
 
+(define-type-method destroy-function ((type inlined))
+  (declare (ignore type))
+  #'(lambda (location &optional offset)
+      (declare (ignore location offset))))
+
+
 (export 'inlined)