-(defmethod from-alien-form (location (class proxy-class) &rest args)
- (declare (ignore args))
- `(ensure-proxy-instance ',(class-name class) ,location))
-
-(defmethod from-alien-function ((class proxy-class) &rest args)
- (declare (ignore args))
- #'(lambda (location)
- (ensure-proxy-instance class location)))
-
-(defmethod to-alien-form (instance (class proxy-class) &rest args)
- (declare (ignore class args))
- `(proxy-location ,instance))
-
-(defmethod to-alien-function ((class proxy-class) &rest args)
- (declare (ignore class args))
- #'proxy-location)
-
-(defmethod copy-from-alien-form (location (class proxy-class) &rest args)
- (declare (ignore args))
- (let ((class-name (class-name class)))
- `(ensure-proxy-instance ',class-name
- (reference-foreign ',class-name ,location))))
-
-(defmethod copy-from-alien-function ((class proxy-class) &rest args)
- (declare (ignore args))
- #'(lambda (location)
- (ensure-proxy-instance class (reference-foreign class location))))
-
-(defmethod copy-to-alien-form (instance (class proxy-class) &rest args)
- (declare (ignore args))
- `(reference-foreign ',(class-name class) (proxy-location ,instance)))
-
-(defmethod copy-to-alien-function ((class proxy-class) &rest args)
- (declare (ignore args))
- #'(lambda (instance)
- (reference-foreign class (proxy-location instance))))
-
-(defmethod writer-function ((class proxy-class) &rest args)
- (declare (ignore args))
- #'(lambda (instance location &optional (offset 0))
- (assert (null-pointer-p (sap-ref-sap location offset)))
- (setf
- (sap-ref-sap location offset)
- (reference-foreign class (proxy-location instance)))))