[cells-devel] Re: [cello-devel] Constructor syntax

Kenny Tilton ktilton at nyc.rr.com
Thu May 13 03:47:47 UTC 2004


Oops. After an error, *to-be-awakened* needs to be cleared in a 
protected form. That stuff is ugly, and I think Cells: The Next 
Generation will make that and other ugliness go away.

For now, try this:

(defun to-be (self)
  (trc "to-be> entry" self (md-state self))
 
  (progn ;;wtrc (0 100 "to-be> entry" self (md-state self) (length 
*to-be-awakened*))
    (when (eql :nascent (md-state self)) ;; formwithview to-be-primary 
:after => rv-stitch! => side-effects
      (let ((already *to-be-awakened*))
        (setf *to-be-awakened* (nconc *to-be-awakened* (list self)))
        (unwind-protect
            (progn
              (trc nil "to-be deferring awaken" self)
              (kids self) ;; sick, just for side effect
              (unless already
                (trc nil "top to-be awakening deferred" self (length 
*to-be-awakened*))
                (do* ((mds *to-be-awakened* (cdr mds))
                      (md (car mds) (car mds)))
                     ((null mds))
                  (if (eql :nascent (md-state md))
                      (md-awaken md)
                    (trc nil "not md-awakening non-nascent" md)))))
          (setf *to-be-awakened* nil)))))
  self)

kt





More information about the cello-devel mailing list