Signaled an error and said that PCL::MATCH-P is unbound. Craig
On Tue, 2003-09-02 at 16:17, Gerd Moellmann wrote: > Craig Lanning <[EMAIL PROTECTED]> writes: > > > The application runs to completion. :-) > > That looks promising :). I think is the real fix should then be the > patch below. Could you please try this one, too? > > (in-package :pcl) > > (defun call-ctor (class initargs) > (flet (;; > ;; Return two values ARGS, MATCH-P. ARGS is a list of values > ;; from INITARGS with which the ctor can be invoked. MATCH-P > ;; true means the ctor can be used. > (call-args (ctor) > (loop for (key value) on initargs by #'cddr > for (ctor-key ctor-value) on (ctor-initargs ctor) by #'cddr > when (or (not (eq key ctor-key)) > (and (constantp ctor-value) > (not (eql value ctor-value)))) > return nil > unless (constantp ctor-value) > collect value into args > finally > (return (values args match-p))))) > ;; > ;; Loop over all ctors of CLASS looking for a ctor that can be > ;; used to construct an instance with the given initargs. If one > ;; is found, invoke it and return its value. > (dolist (ctor (plist-value class 'ctors)) > (when (eq (ctor-state ctor) 'optimized) > (multiple-value-bind (args match-p) > (call-args ctor) > (when match-p > (return (apply ctor args))))))))
