<div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">nice idea. i've commited something similar (to ucw_public for now,<br>i'll move it over to ucw_dev if it works for you).
<br></blockquote></div><br>thanks! i had to add a "(when new-value..." to guard setf'ing nil. but there's still some trouble: this code breaks in the debugger with sbcl in the early stage of serving the page (please note the break call/condition):
<br><br>(defmethod (setf mopp:slot-value-using-class) ((new-value standard-component)<br> (class standard-component-class)<br> (instance standard-component)
<br> (slot-def standard-component-effective-slot))<br> ;; let the next method perform the acutal setf'ing<br> (call-next-method)<br> (unless (or (null new-value)<br> (typep new-value 'standard-component))
<br> (break))<br> (when new-value<br> (setf (component.place new-value)<br> (make-place (mopp:slot-value-using-class class instance slot-def))))<br> new-value)<br><br>i either miss something obvious or the above defmethod does not dispatch on new -value. if i then press continue in the debugger i get this error as expected:
<br><br>There is no applicable method for the generic function<br> #<STANDARD-GENERIC-FUNCTION (SETF IT.BESE.UCW:COMPONENT.PLACE) (1)><br>when called with arguments<br> (#<IT.BESE.UCW::PLACE (SB-MOP:SLOT-VALUE-USING-CLASS CLASS
<br> IT.BESE.UCW::INSTANCE<br> IT.BESE.UCW::SLOT-DEF) {DDC2269}><br> DWIM-PRESENTATION-TEST::FOO).<br> [Condition of type SIMPLE-ERROR]
<br><br>the relevant stack frames are:<br><br>(if indenting is screwed up: IT.BESE.UCW::REINSTATE-BACKTRACKED)<br><br> 12: (SB-PCL::ACCESSOR-MISS #<STANDARD-GENERIC-FUNCTION (SETF IT.BESE.UCW:COMPONENT.PLACE) (1)> #<
IT.BESE.UCW::PLACE (SB-MOP:SLOT-VALUE-USING-CLASS CLASS IT.BESE.UCW::INSTANCE IT.BESE.UCW::SLOT-DEF) {DDC2269}> DWIM-PRESENTATION-TEST::FOO #<SB-PCL::N-N {C6D8799}>)<br> 13: ((SB-PCL::FAST-METHOD (SETF SB-MOP:SLOT-VALUE-USING-CLASS) (
IT.BESE.UCW:STANDARD-COMPONENT IT.BESE.UCW:STANDARD-COMPONENT-CLASS IT.BESE.UCW:STANDARD-COMPONENT IT.BESE.UCW::STANDARD-COMPONENT-EFFECTIVE-SLOT)) #<unavailable argument> #<CLOSURE (LAMBDA (SB-PCL::NV CLASS SB-KERNEL:INSTANCE ...)) {C63C3B5}> DWIM-PRESENTATION-TEST::FOO #<
IT.BESE.UCW:STANDARD-COMPONENT-CLASS IT.BESE.UCW:SIMPLE-CONTAINER> #<IT.BESE.UCW:SIMPLE-CONTAINER {C7836F9}> #<IT.BESE.UCW::STANDARD-COMPONENT-EFFECTIVE-SLOT IT.BESE.UCW::CURRENT-COMPONENT-NAME>)<br> 14: ((SB-PCL::FAST-METHOD
IT.BESE.UCW::REINSTATE-BACKTRACKED (IT.BESE.UCW::STANDARD-SESSION-FRAME)) #<unavailable argument> #<unavailable argument> #<IT.BESE.UCW::STANDARD-SESSION-FRAME TJGGNfeJnkJHoqMafHaq 13/0/138 {C7089C9}>)<br>
15: ((SB-PCL::FAST-METHOD IT.BESE.UCW::SERVICE (IT.BESE.UCW::STANDARD-SESSION-FRAME IT.BESE.UCW::REQUEST-CONTEXT)) #<unavailable argument> #<unavailable argument> #<IT.BESE.UCW::STANDARD-SESSION-FRAME TJGGNfeJnkJHoqMafHaq 13/0/138 {C7089C9}> #<
IT.BESE.UCW::COOKIE-SESSION-REQUEST-CONTEXT {D197599}>)<br><br>could be i just need a sleep,<br><br clear="all">- attila<br><br>(alias 101 on irc &no 'its not lisp code :)