X-Git-Url: https://git.distorted.org.uk/~mdw/clg/blobdiff_plain/90e8bbf63d6ab5647f284af1cbab30ae37c5ae1c..6d747b3c2b073ca9a106bb26d6e53f6192a43917:/gffi/proxy.lisp diff --git a/gffi/proxy.lisp b/gffi/proxy.lisp index b7cdaed..9cf15ca 100644 --- a/gffi/proxy.lisp +++ b/gffi/proxy.lisp @@ -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.2 2006-06-08 13:25:09 espen Exp $ +;; $Id: proxy.lisp,v 1.4 2006-08-16 12:09:03 espen Exp $ (in-package "GFFI") @@ -162,7 +162,7 @@ (funcall (instance-finalizer instance))) (slot-makunbound instance 'location) (cancel-finalization instance)) - ;; We can't cached invalidated instances in CLISP beacuse it is + ;; We can't cache invalidated instances in CLISP beacuse it is ;; not possible to cancel finalization #-clisp(cache-invalidated-instance instance)) @@ -241,14 +241,22 @@ (call-next-method)) (call-next-method))) + (defmethod slot-readable-p ((slotd effective-alien-slot-definition)) + (declare (ignore slotd)) + t) - (defmethod compute-slot-reader-function ((slotd effective-alien-slot-definition)) + (defmethod compute-slot-reader-function ((slotd effective-alien-slot-definition) &optional signal-unbound-p) + (declare (ignore signal-unbound-p)) (let* ((type (slot-definition-type slotd)) (offset (slot-definition-offset slotd)) (reader (reader-function type))) #'(lambda (object) (funcall reader (foreign-location object) offset)))) + (defmethod slot-writable-p ((slotd effective-alien-slot-definition)) + (declare (ignore slotd)) + t) + (defmethod compute-slot-writer-function ((slotd effective-alien-slot-definition)) (let* ((type (slot-definition-type slotd)) (offset (slot-definition-offset slotd)) @@ -260,7 +268,8 @@ (funcall writer value location offset)) value))) - (defmethod compute-slot-reader-function ((slotd effective-virtual-alien-slot-definition)) + (defmethod compute-slot-reader-function ((slotd effective-virtual-alien-slot-definition) &optional signal-unbound-p) + (declare (ignore signal-unbound-p)) (if (and (slot-boundp slotd 'getter) (stringp (slot-definition-getter slotd))) (let ((getter (slot-definition-getter slotd)) (type (slot-definition-type slotd))