Removed dependency on anaphora and metabang-bind
[cl-gtk2.git] / glib / gobject.foreign-gobject-subclassing.lisp
index 53b424d..b64f451 100644 (file)
                            (return-from-interface-method-implementation (v) :interactive (lambda () (list (eval (read)))) v)))))))
 
 (defun interface-init (iface data)
-  (bind (((class-name interface-name) (prog1 (get-stable-pointer-value data) (free-stable-pointer data)))
-         (vtable (gethash interface-name *vtables*))
-         (vtable-cstruct (vtable-description-cstruct-name vtable)))
-    (debugf "interface-init for class ~A and interface ~A~%" class-name interface-name)
-    (iter (for method in (vtable-description-methods vtable))
-          (setf (foreign-slot-value iface vtable-cstruct (vtable-method-info-name method)) (get-callback (vtable-method-info-callback-name method))))))
+  (destructuring-bind (class-name interface-name) (prog1 (get-stable-pointer-value data) (free-stable-pointer data))
+    (let* ((vtable (gethash interface-name *vtables*))
+           (vtable-cstruct (vtable-description-cstruct-name vtable)))
+      (debugf "interface-init for class ~A and interface ~A~%" class-name interface-name)
+      (iter (for method in (vtable-description-methods vtable))
+            (setf (foreign-slot-value iface vtable-cstruct (vtable-method-info-name method)) (get-callback (vtable-method-info-callback-name method)))))))
 
 (defcallback c-interface-init :void ((iface :pointer) (data :pointer))
   (interface-init iface data))