- generic-storage-classconstant
- s8-storage-classconstant
- s16-storage-classconstant
- s32-storage-classconstant
- s64-storage-classconstant
- u1-storage-classconstant
- u8-storage-classconstant
- u16-storage-classconstant
- u32-storage-classconstant
- u64-storage-classconstant
- f8-storage-classconstant
- f16-storage-classconstant
- f32-storage-classconstant
- f64-storage-classconstant
- c64-storage-classconstant
- c128-storage-classconstant
generic-storage-class is defined as if by
(define generic-storage-class (make-storage-class vector-ref vector-set! (lambda (arg) #t) make-vector vector-copy! vector-length #f))
Implementations shall define sX-storage-class for X=8, 16, 32, and 64 (which have default values 0 and manipulate exact integer values between $-2^{x-1}$ and $2^{X-1}-1$ inclusive), uX-storage-class for X=1, 8, 16, 32, and 64 (which have default values 0 and manipulate exact integer values between 0 and $2^X-1$ inclusive), fX-storage-class for X= 8, 16, 32, and 64 (which have default value 0.0 and manipulate 8-, 16-, 32-, and 64-bit floating-point numbers), and cX-storage-class for X= 64 and 128 (which have default value 0.0+0.0i and manipulate complex numbers with, respectively, 32- and 64-bit floating-point numbers as real and imaginary parts).
Implementations with an appropriate homogeneous vector type should define the associated global variable using make-storage-class, otherwise they shall define the associated global variable to #f.