This is the portably-definable subset of stdint.h.
at least types are deliberately omited,
in order to not encourage a false sense of compatibility with C.
Exact types suffice for at least and fast, though are not necessarily fastest.
Note that the signed types below are defined as using two's complement.
IMPORT Ctypes, Word;
int8_t = Ctypes.signed_char;
uint8_t = Ctypes.unsigned_char;
int16_t = Ctypes.short;
uint16_t = Ctypes.unsigned_short;
int32_t = Ctypes.int;
uint32_t = Ctypes.unsigned;
int64_t = Ctypes.long_long;
uint64_t = Ctypes.unsigned_long_long;
intptr_t = INTEGER;
uintptr_t = Word.T;
INT8_MIN = FIRST( int8_t);
INT8_MAX = LAST( int8_t);
INT16_MIN = FIRST(int16_t);
INT16_MAX = LAST(int16_t);
INT32_MIN = FIRST(int32_t);
INT32_MAX = LAST(int32_t);
INT64_MIN = FIRST(int32_t);
INT64_MAX = LAST(int64_t);
UINT8_MAX = LAST(uint8_t);
UINT16_MAX = LAST(uint16_t);
UINT32_MAX = 16_FFFFFFFFL; (* Perhaps not the desired type, alas. *)
(* UINT64_MAX cannot be defined. *)