(define-simple-c-type size-t "size_t" :export t)
(define-simple-c-type ptrdiff-t "ptrdiff_t" :export t)
+(macrolet ((define-cross-product-types (&rest pieces)
+ `(progn
+ ,@(mapcar (lambda (row)
+ (let* ((c-name (apply #'concatenate 'string row))
+ (lisp-name (intern
+ (frob-identifier c-name))))
+ `(define-simple-c-type ,lisp-name ,c-name
+ :export t)))
+ (apply #'cross-product pieces)))))
+ (define-cross-product-types ("int" "uint") ("" "_least" "_fast")
+ ("8" "16" "32" "64") "_t")
+ (define-cross-product-types ("int" "uint") ("ptr" "max") "_t"))
+
;;;--------------------------------------------------------------------------
;;; Tagged types (enums, structs and unions).