From 9cc2ed841ec77ce2028cf4a1497428e61a1bf727 Mon Sep 17 00:00:00 2001 From: David Sorokin Date: Mon, 3 Jun 2013 13:51:25 +0400 Subject: [PATCH] Updated macros. --- observable-macros.lisp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/observable-macros.lisp b/observable-macros.lisp index c0c91d2..74af605 100644 --- a/observable-macros.lisp +++ b/observable-macros.lisp @@ -25,15 +25,17 @@ "Define the event trigger. Example: (deftrigger trigger-node-rect-changed :after ((node rect-node)) (:slot 'rect-changed) - (:documentation ...)) ; optional + (:documentation ...) + (:form ...)) ; optional " `(progn (defgeneric ,name (,sender ,@args) ,@(let ((doc (assoc :documentation specs))) (if doc (list doc)))) (defmethod ,name ((,sender ,type) ,@args) - ,@(if args `((declare (ignore ,@args)))) - (values)) + ,@(if args `((declare (ignorable ,@args)))) + ,@(let ((form (assoc :form specs))) + (cdr form))) (defmethod ,name ,qualifier ((,sender ,type) ,@args) (trigger-event (slot-value ,sender @@ -98,4 +100,5 @@ (setf (slot-value ,name ,slot) ,v) ,@(if midform (list `(funcall ,midform ,v0 ,v)))) ,@(if changed-trigger (list `(,changed-trigger ,name))) - ,@(if postform (list postform)))))))) + ,@(if postform (list postform))) + (slot-value ,name ,slot))))))