X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=gacela_objects.lisp;h=7ab8eb773a89ef9a3bd30e4851c3f7f3849c9d5f;hb=3823778d4ca2d265906312521f63da265a4d2630;hp=00ade7fd0d7503419091d7967517692f859ead5c;hpb=4305910b0019e2b4b655c8af4e3347fd6944fad6;p=gacela.git diff --git a/gacela_objects.lisp b/gacela_objects.lisp index 00ade7f..7ab8eb7 100755 --- a/gacela_objects.lisp +++ b/gacela_objects.lisp @@ -74,9 +74,15 @@ active-objects)) -(defmacro make-object (&key name class attr bhv look) +(defun make-object-old (name &key attr bhv look) + (let ((object + `(:name ,name :attr ,(make-object-attributes attr) :bhv ,(make-object-behaviour bhv) :look ,look))) + (add-object object) + object)) + +(defmacro make-object (name attr bhv &body look) `(let ((object - '(:name ,name :class ,class :attr ,(make-object-attributes attr) :bhv ,(make-object-behaviour bhv) :look ,look))) + '(:name ,name :attr ,(make-object-attributes attr) :bhv ,(make-object-behaviour bhv) :look (lambda () ,@look)))) (add-object object) object)) @@ -95,5 +101,6 @@ `(,pname ,value))) (defun make-object-behaviour (bhv) - (cond ((consp bhv) bhv) - (t (list bhv)))) + (cond ((null bhv) nil) + ((atom bhv) (list bhv)) + (t bhv)))