- (case type
- (:integer
- (as-c "#ifdef" cname)
- (printf "(cl:defconstant ~A %d \"~A\")" lispname doc
- cname)
- (as-c "#else")
- (printf "(sb-int:style-warn \"Couldn't grovel for ~A (unknown to the C compiler).\")" cname)
- (as-c "#endif"))
- (:type
- (printf "(cl:eval-when (:compile-toplevel :load-toplevel :execute) (sb-alien:define-alien-type ~A (sb-alien:%ssigned %d)))" lispname
- (format nil "SIGNED_(~A)" cname)
- (format nil "(8*sizeof(~A))" cname)))
- (:string
- (printf "(cl:defparameter ~A %s \"~A\"" lispname doc
- cname))
- (:function
- (printf "(cl:declaim (cl:inline ~A))" lispname)
- (destructuring-bind (f-cname &rest definition) cname
- (printf "(sb-grovel::define-foreign-routine (\"~A\" ~A)" f-cname lispname)
- (printf "~{ ~W~^\\n~})" definition)))
- (:structure
- ;; FIXME: structure slots should be auto-exportable as well.
- (c-for-structure lispname cname))
- (otherwise
- ;; should we really not sprechen espagnol, monsieurs?
- (error "Unknown grovel keyword encountered: ~A" type)))
- (when export
- (printf "(cl:export '~A)" lispname))))
+ (case type
+ (:integer
+ (as-c "#ifdef" cname)
+ (printf "(cl:defconstant ~A %d \"~A\")" lispname doc
+ cname)
+ (as-c "#else")
+ (printf "(sb-int:style-warn \"Couldn't grovel for ~A (unknown to the C compiler).\")" cname)
+ (as-c "#endif"))
+ (:enum
+ (c-for-enum lispname cname export))
+ (:type
+ (printf "(cl:eval-when (:compile-toplevel :load-toplevel :execute) (sb-alien:define-alien-type ~A (sb-alien:%ssigned %d)))" lispname
+ (format nil "SIGNED_(~A)" cname)
+ (format nil "(8*sizeof(~A))" cname)))
+ (:string
+ (printf "(cl:defparameter ~A %s \"~A\"" lispname doc
+ cname))
+ (:function
+ (printf "(cl:declaim (cl:inline ~A))" lispname)
+ (destructuring-bind (f-cname &rest definition) cname
+ (printf "(sb-grovel::define-foreign-routine (\"~A\" ~A)" f-cname lispname)
+ (printf "~{ ~W~^\\n~})" definition)))
+ (:structure
+ (c-for-structure lispname cname))
+ (otherwise
+ ;; should we really not sprechen espagnol, monsieurs?
+ (error "Unknown grovel keyword encountered: ~A" type)))
+ (when export
+ (printf "(cl:export '~A)" lispname))))