X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/sod/blobdiff_plain/71ecc48e20c8651175b16f37ee66ca08a36cc1c6..a07d8d005f69c0f9f5da2e09c6ee39cb1e1801aa:/builtin.lisp diff --git a/builtin.lisp b/builtin.lisp index 67c04c1..9309581 100644 --- a/builtin.lisp +++ b/builtin.lisp @@ -65,8 +65,7 @@ (defun output-init-function (class stream) (dolist (item (ichain-body ichain)) (etypecase item (vtable-pointer - (format stream " ~A._vt = &~A;~%" - ich (vtable-name class (ichain-head ichain)))) + nil) (islots (let ((isl (format nil "~A.~A" ich @@ -75,14 +74,18 @@ (defun output-init-function (class stream) (let ((dslot (effective-slot-direct-slot slot)) (init (effective-slot-initializer slot))) (when init + (format stream " ~A =" isl) (ecase (sod-initializer-value-kind init) - (:single - (format stream " ~A = ~A;~%" - isl (sod-initializer-value-form init))) - (:compound - (format stream " ~A = (~A)~A;~%" - isl (sod-slot-type dslot) - (sod-initializer-value-form init))))))))))))) + (:simple (write (sod-initializer-value-form init) + :stream stream + :pretty nil :escape nil) + (format stream ";~%")) + (:compound (format stream " (~A) {" + (sod-slot-type dslot)) + (write (sod-initializer-value-form init) + :stream stream + :pretty nil :escape nil) + (format stream "};~%")))))))))))) (format stream "~&~: return (p); }~2%")))