X-Git-Url: https://git.distorted.org.uk/~mdw/sod/blobdiff_plain/7b118f8a767addd8c869bf83506f48d28dcd7b94..ed3ce6c2352d76442b79badfbe08bc6ecde6934d:/src/class-output.lisp diff --git a/src/class-output.lisp b/src/class-output.lisp index 8d1d93e..dec1e4e 100644 --- a/src/class-output.lisp +++ b/src/class-output.lisp @@ -94,10 +94,17 @@ (metaroot (find-root-metaclass class))) (format stream "/* The class object. */~@ extern const struct ~A ~A__classobj;~@ - #define ~:*~A__class (&~:*~A__classobj.~A.~A)~2%" + #define ~:*~A__class (&~:*~A__classobj.~A.~A)~%" (ilayout-struct-tag metaclass) class (sod-class-nickname (sod-class-chain-head metaroot)) - (sod-class-nickname metaroot))))) + (sod-class-nickname metaroot)) + (dolist (chain (sod-class-chains metaclass)) + (let ((tail (car chain))) + (unless (eq tail metaroot) + (format stream "#define ~A__cls_~A (&~2:*~A__classobj.~A.~A)~%" + class (sod-class-nickname (sod-class-chain-head tail)) + (sod-class-nickname tail))))) + (terpri stream)))) ;; Maybe generate an islots structure. (when (sod-class-slots class)