Tue Jan 26 17:26:09 CET 2010 Tobias Rautenkranz * Fix for r1077826. Not instantiable parent classes are external. (QAbstractPrintDialog) diff -rN -u old-smoke/src/clos.lisp new-smoke/src/clos.lisp --- old-smoke/src/clos.lisp 2014-10-30 08:08:06.000000000 +0100 +++ new-smoke/src/clos.lisp 2014-10-30 08:08:06.000000000 +0100 @@ -193,11 +193,16 @@ (defmethod initialize-instance :around ((class cxx:class) &rest args) (apply #'init-cxx-class class #'call-next-method args)) -(defun smoke-class-symbol (smoke-class) - "Returns the Lisp class-name of SMOKE-CLASS:" - (if (external-p smoke-class) - (class-name (find-smoke-class smoke-class)) - (lispify (name smoke-class)))) +(defun smoke-class-symbols (classes) + (let ((class-symbols)) + (dolist (class classes class-symbols) + (if (external-p class) + (let ((real-class (find-smoke-class class nil))) + (if real-class + (push (class-name real-class) class-symbols) + (warn "The class ~A could not be found in any module." + (name class)))) + (push (lispify (name class)) class-symbols))))) (defun make-smoke-classes (package smoke) "Constructs a lisp class in PACKAGE for each one in the Smoke module SMOKE." @@ -219,8 +224,8 @@ (add-id class (closer-mop:ensure-class class-name :direct-superclasses - (mapcar #'smoke-class-symbol - (smoke-class-direct-superclasses class)) + (smoke-class-symbols + (smoke-class-direct-superclasses class)) :id (id class) :smoke (smoke class) :metaclass 'smoke-standard-class))