Fix for r1077826. Not instantiable parent classes are external. (QAbstractPrintDialog)
Tue Jan 26 17:26:09 CET 2010 Tobias Rautenkranz <tobias@rautenkranz.ch>
* 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 07:05:27.000000000 +0100
+++ new-smoke/src/clos.lisp 2014-10-30 07:05:27.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))