[cells-devel] Cells: make-kid bypasses dependencies on kids of parent ?!

Frank Goenninger frgo at mac.com
Sat May 24 16:18:30 UTC 2008


Am 24.05.2008 um 18:08 schrieb Ken Tilton:

> Frank Goenninger wrote:
>> I have the following definition:
>> ;; A task is a container for ops. A task holds its ops as kids.  
>> So,  when a
>> ;;; task is called the task will call its kids.
>> (defmd task (family)
>>  (.md-name :accessor id :initarg :id)
>>  fn-code
>>  thread
>>  state
>>  nr-ops
>>  :id (c-in (gensym "GNC.APP.TASK-"))
>>  :fn-code (c-in nil)
>>  :thread (c-in nil)
>>  :state (c-in nil)
>>  :nr-ops (c? (loop for kid in (^kids)
>>                   counting (eql (type-of kid) 'op) into ops-count
>>                   finally (return ops-count))))
>> Now, when I do
>> > (setq self (make-instance 'task))
>> TASK1
>> > (setq my-kid (make-kid 'task))
>> TASK 2
>> > (^nr-ops)
>> 0
>> ... and this should now be 1, no ? Or what's the right way to add  
>> kids ?
>
> Add them? :) make-kid does not add to the kids of self.
>
> (push (make-kid...) (kids self))

Nope. I knew make-kid doesn't add kids but

(fm-kid-add self my-kid)

*does* add the kid. Still no luck. So I change the rule for nr-ops to

   :nr-ops (c? (loop for kid in (^kids)
                    counting kid into ops-count
                    do
                    (trc "Counting kids" kid ops-count)
                    finally (return ops-count)))

... and I don't get any trace output ...

???

Thx!

frgo




More information about the cells-devel mailing list