This set of changes enables the use of forward referenced classes in PCL.
The problem was(is) that the wrapper object needed to connect the Lisp type system to PCL classes doesn't exist until the forward-referenced-class is defined. At that time all the subclasses of it are initialized and wrappers attached. In the meantime, the actual forward referenced class is an instance of pcl::forward-referenced-class and any subclasses are pcl class instances with most slots nil. The fix herein arranges for UPDATE-LISP-CLASS-LAYOUT to also set the lisp:class-name and use (setf lisp:find-class) to connect the new layout to the Lisp class system. An undesired consequence of this is that DEFCLASS can't return a valid class object unless all superclasses are defined. This shouldn't be a real problem as the classes can't be used in the intermediate state, but the HyperSpec says DEFCLASS returns a class object. We return a valid class object or NIL.
Loading
Please register or sign in to comment