chiark / gitweb /
src/c-types-*.lisp: New type for functions which take keyword arguments.
[sod] / src / builtin.lisp
index 2d59158d644f02063f1557d463587fa465553c11..ea72d662999a5244e315feac9aae815848727848 100644 (file)
@@ -90,8 +90,8 @@ (define-class-slot "imprint" (class stream)
   (format nil "~A__imprint" class)
   (let ((ilayout (sod-class-ilayout class)))
     (format stream "~&~:
-/* Imprint raw memory with instance structure. */
-static void *~A__imprint(void *p)
+/* Imprint raw memory with class `~A' instance structure. */
+static void *~:*~A__imprint(void *p)
 {
   struct ~A *sod__obj = p;
 
@@ -140,9 +140,10 @@ (define-class-slot "init" (class stream)
                               "  struct ~A *sod__obj = ~A__imprint(p);~2%"
                               (ilayout-struct-tag class) class)
                       (setf used t))
-                    (format stream "  {~%    ~A ~A ="
-                            (sod-slot-type dslot)
-                            *sod-tmp-val*)
+                    (format stream "  {~%    ")
+                    (pprint-c-type (sod-slot-type dslot) stream
+                                   *sod-tmp-val*)
+                    (format stream " =")
                     (ecase (sod-initializer-value-kind init)
                       (:simple (write (sod-initializer-value-form init)
                                       :stream stream
@@ -316,7 +317,7 @@ (defun make-builtin-module ()
                                                    :case :common)
                               :state nil)))
     (with-module-environment (module)
-      (dolist (name '("va_list" "size_t" "ptrdiff_t"))
+      (dolist (name '("va_list" "size_t" "ptrdiff_t" "wchar_t"))
        (add-to-module module (make-instance 'type-item :name name)))
       (flet ((header-name (name)
               (concatenate 'string "\"" (string-downcase name) ".h\""))