/usr/lib/mlton/include/basis/coerce.h is in mlton-basis 20100608-5.1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | #define coerce(n, f, t) \
MLTON_CODEGEN_STATIC_INLINE \
t f##_##n##To##t (f x) { \
return (t)x; \
}
#define bothFromWordCoerce(name, from, to) \
coerce (name, Word##S##from, to) \
coerce (name, Word##U##from, to)
#define bothToWordCoerce(name, from, to) \
coerce (name, from, Word##S##to) \
coerce (name, from, Word##U##to)
#define allWordCoerce(size) \
bothToWordCoerce(rnd, Real32, size) \
bothToWordCoerce(rnd, Real64, size) \
bothFromWordCoerce(extd, size, Word8) \
bothFromWordCoerce(extd, size, Word16) \
bothFromWordCoerce(extd, size, Word32) \
bothFromWordCoerce(extd, size, Word64)
allWordCoerce(8)
allWordCoerce(16)
allWordCoerce(32)
allWordCoerce(64)
#undef allWordCoerce
#undef bothToWordCoerce
#undef bothFromWordCoerce
coerce(rnd, Real32, Real32)
coerce(rnd, Real32, Real64)
coerce(rnd, Real64, Real32)
coerce(rnd, Real64, Real64)
#undef coerce
#define cast(f, t) \
MLTON_CODEGEN_STATIC_INLINE \
t f##_castTo##t (f x) { \
t y; \
memcpy(&y, &x, sizeof(t)); \
return y; \
}
cast(Real32, Word32)
cast(Word32, Real32)
cast(Real64, Word64)
cast(Word64, Real64)
#undef cast
|