;; types that are right for most platforms:
(define-constant-default int-bits 32)
(define-constant-default short-bits 16)
(define-constant-default typedef-ptr "void *")
(define-constant-default typedef-iptr "long")
(define-constant-default typedef-uptr "unsigned long")
(define-constant-default typedef-i8 "char")
(define-constant-default typedef-u8 "unsigned char")
(define-constant-default typedef-i16 "short")
(define-constant-default typedef-u16 "unsigned short")
(define-constant-default typedef-i32 "int")
(define-constant-default typedef-u32 "unsigned int")
(define-constant-default typedef-i64 (if (= 64 (constant ptr-bits))
                                         "long"
                                         "long long"))
(define-constant-default typedef-u64 (if (= 64 (constant ptr-bits))
                                         "unsigned long"
                                         "unsigned long long"))
(define-constant-default typedef-string-char "unsigned int")
(define-constant-default wchar-bits 32)

;; derivations that are usually right
(define-constant-default address-bits (constant ptr-bits))
(define-constant-default size_t-bits (constant ptr-bits))
(define-constant-default ptrdiff_t-bits (constant ptr-bits))
(define-constant-default long-bits (constant ptr-bits))
(define-constant-default long-long-bits 64)
(define-constant-default max-float-alignment (if (= 64 (constant ptr-bits))
                                                 8
                                                 4))
(define-constant-default max-integer-alignment (if (= 64 (constant ptr-bits))
                                                   8
                                                   4))
(define-constant-default special-initial-field-alignment? #f)
(define-constant-default time-t-bits (constant ptr-bits))
(define-constant-default segment-table-levels (if (= 64 (constant ptr-bits))
                                                  3
                                                  1))

;; instruction availability (defaults to unavailable)
(define-constant-default integer-divide-instruction #f)
(define-constant-default popcount-instruction #f)
(define-constant-default sqrt-instruction #f)
(define-constant-default fence-instruction #f)
(define-constant-default software-floating-point #f)
