Fix warnings for bare struct references in glib/.
[cl-gtk2.git] / glib / gobject.boxed.lisp
index 1445389..12f4cda 100644 (file)
                             :slots (mapcar #'parse-cstruct-slot slots)))
 
 (defmacro define-g-boxed-cstruct (name g-type-name &body slots)
-  (let ((cstruct-description (parse-cstruct-definition name slots)))
+  (let ((cstruct-description (parse-cstruct-definition name slots))
+       (cstruct-name (generated-cstruct-name name))
+       (cunion-name (generated-cunion-name name)))
     `(progn
        (defstruct ,name
          ,@(iter (for slot in (cstruct-description-slots cstruct-description))
                  (for name = (cstruct-slot-description-name slot))
                  (for initform = (cstruct-slot-description-initform slot))
                  (collect (list name initform))))
-       (defcstruct ,(generated-cstruct-name name)
+       (defcstruct ,cstruct-name
          ,@(iter (for slot in (cstruct-description-slots cstruct-description))
                  (for name = (cstruct-slot-description-name slot))
                  (for type = (cstruct-slot-description-type slot))
                  (for count = (cstruct-slot-description-count slot))
                  (collect `(,name ,type ,@(when count `(:count ,count))))))
-       (defcunion ,(generated-cunion-name name)
-         (,name ,(generated-cstruct-name name)))
+       (defctype ,cstruct-name (:struct ,cstruct-name))
+       (defcunion ,cunion-name
+         (,name ,cstruct-name))
+       (defctype ,cunion-name (:union ,cunion-name))
        (eval-when (:compile-toplevel :load-toplevel :execute)
          (setf (get ',name 'g-boxed-foreign-info)
                (make-g-boxed-cstruct-wrapper-info :name ',name
   (intern (format nil "~A-CUNION" (symbol-name symbol)) (symbol-package symbol)))
 
 (defun generate-cstruct-1 (struct)
-  `(defcstruct ,(generated-cstruct-name (cstruct-description-name struct))
-     ,@(iter (for slot in (cstruct-description-slots struct))
-             (collect `(,(cstruct-slot-description-name slot) ,(cstruct-slot-description-type slot)
-                         ,@(when (cstruct-slot-description-count slot)
-                                 `(:count ,(cstruct-slot-description-count slot))))))))
+  (let ((cstruct-name (generated-cstruct-name (cstruct-description-name struct))))
+    `((defcstruct ,cstruct-name
+        ,@(iter (for slot in (cstruct-description-slots struct))
+                (collect `(,(cstruct-slot-description-name slot) ,(cstruct-slot-description-type slot)
+                            ,@(when (cstruct-slot-description-count slot)
+                                   `(:count ,(cstruct-slot-description-count slot)))))))
+      (defctype ,cstruct-name (:struct ,cstruct-name)))))
 
 (defun generate-c-structures (structure)
   (iter (for str in (all-structures structure))
         (for cstruct = (var-structure-resulting-cstruct-description str))
-        (collect (generate-cstruct-1 cstruct))))
+        (nconcing (generate-cstruct-1 cstruct))))
 
 (defun generate-variant-union (struct)
-  `(defcunion ,(generated-cunion-name (var-structure-name struct))
-     ,@(iter (for str in (all-structures struct))
-             (collect `(,(var-structure-name str)
-                         ,(generated-cstruct-name (var-structure-name str)))))))
+  (let ((cunion-name (generated-cunion-name (var-structure-name struct))))
+    `((defcunion ,cunion-name
+        ,@(iter (for str in (all-structures struct))
+                (collect `(,(var-structure-name str)
+                            ,(generated-cstruct-name (var-structure-name str))))))
+      (defctype ,cunion-name (:union ,cunion-name)))))
 
 (defun generate-structure-1 (str)
   (let ((name (var-structure-name str)))
 (defmacro define-g-boxed-variant-cstruct (name g-type-name &body slots)
   (let* ((structure (parse-variant-structure-definition name slots)))
     `(progn ,@(generate-c-structures structure)
-            ,(generate-variant-union structure)
+            ,@(generate-variant-union structure)
             ,@(generate-structures structure)
             (eval-when (:compile-toplevel :load-toplevel :execute)
               (setf (get ',name 'g-boxed-foreign-info)