X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=gacela_objects.lisp;fp=gacela_objects.lisp;h=af5cf2043859e1ca0e256cdc1970a7c1bac9411c;hb=4c8056245f4724428d2d7615085816e0b275a013;hp=c3f9ea255ab258d8ab895b8cf1e2e6c6db54a767;hpb=21d0c96bd43aa2cc5f8546af2c2953d993e9986e;p=gacela.git diff --git a/gacela_objects.lisp b/gacela_objects.lisp index c3f9ea2..af5cf20 100755 --- a/gacela_objects.lisp +++ b/gacela_objects.lisp @@ -81,9 +81,14 @@ object)) (defmacro make-object (name attr bhv &body look) - `(let ((attr ,(make-object-attributes attr) bhv ,(make-object-behaviour bhv))) - (defun ,name (option) ,@look) - )) + `(let ((attr ,(cond (attr (cons 'list (make-object-attributes attr))))) + (bhv ,(cond (bhv (cons 'list (make-object-behaviour bhv)))))) + (defun ,name (option &rest param) + (case option + (:get-attr attr) + (:set-attr (setq attr @param)) + (:get-bhv bhv) + (:render ,@look))))) (defun make-object-attributes (attr) (cond ((or (null attr) (atom attr)) nil)