chiark / gitweb /
It lives!
[sod] / builtin.lisp
index 67c04c1d87d6670f64dd321524cc09aff0833c01..9309581f30b51b2f3afcab7a6f89dd21eb2fd87b 100644 (file)
@@ -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%")))