Import Upstream version 20180207
[hcoop/debian/mlton.git] / basis-library / sml-nj / unsafe.sml
1 (* Copyright (C) 2017 Matthew Fluet.
2 * Copyright (C) 1999-2006 Henry Cejtin, Matthew Fluet, Suresh
3 * Jagannathan, and Stephen Weeks.
4 * Copyright (C) 1997-2000 NEC Research Institute.
5 *
6 * MLton is released under a BSD-style license.
7 * See the file MLton-LICENSE for details.
8 *)
9
10 functor UnsafeMonoArray (A: MONO_ARRAY_EXTRA): UNSAFE_MONO_ARRAY =
11 struct
12 open A
13
14 val sub = unsafeSub
15 val update = unsafeUpdate
16 val create = fromPoly o Array.unsafeAlloc
17 end
18
19 functor UnsafeMonoVector (V: MONO_VECTOR_EXTRA): UNSAFE_MONO_VECTOR =
20 struct
21 open V
22
23 val sub = unsafeSub
24 end
25
26 functor UnsafePackWord(PW : PACK_WORD_EXTRA) : PACK_WORD =
27 struct
28 open PW
29 val subVec = unsafeSubVec
30 val subVecX = unsafeSubVecX
31 val subArr = unsafeSubArr
32 val subArrX = unsafeSubArrX
33 val update = unsafeUpdate
34 end
35
36 functor UnsafePackReal(PW : PACK_REAL_EXTRA) : PACK_REAL =
37 struct
38 open PW
39 val subVec = unsafeSubVec
40 val subArr = unsafeSubArr
41 val update = unsafeUpdate
42 end
43
44 (* This is here so that the code generated by Lex and Yacc will work. *)
45 structure Unsafe: UNSAFE =
46 struct
47 structure Array =
48 struct
49 val alloc = Array.unsafeAlloc
50 val sub = Array.unsafeSub
51 val uninitIsNop = Array.uninitIsNop
52 val uninit = Array.unsafeUninit
53 val update = Array.unsafeUpdate
54 val create = Array.unsafeArray
55 structure Raw = Array.Raw
56 structure Raw =
57 struct
58 type 'a rawarr = 'a Raw.rawarr
59 val alloc = Raw.unsafeAlloc
60 val toArray = Raw.unsafeToArray
61 val uninitIsNop = Raw.uninitIsNop
62 val uninit = Raw.unsafeUninit
63 end
64 end
65 structure BoolArray = UnsafeMonoArray (BoolArray)
66 structure BoolVector = UnsafeMonoVector (BoolVector)
67 structure CharArray = UnsafeMonoArray (CharArray)
68 structure CharVector = UnsafeMonoVector (CharVector)
69 structure IntArray = UnsafeMonoArray (IntArray)
70 structure IntVector = UnsafeMonoVector (IntVector)
71 structure Int8Array = UnsafeMonoArray (Int8Array)
72 structure Int8Vector = UnsafeMonoVector (Int8Vector)
73 structure Int16Array = UnsafeMonoArray (Int16Array)
74 structure Int16Vector = UnsafeMonoVector (Int16Vector)
75 structure Int32Array = UnsafeMonoArray (Int32Array)
76 structure Int32Vector = UnsafeMonoVector (Int32Vector)
77 structure Int64Array = UnsafeMonoArray (Int64Array)
78 structure Int64Vector = UnsafeMonoVector (Int64Vector)
79 structure IntInfArray = UnsafeMonoArray (IntInfArray)
80 structure IntInfVector = UnsafeMonoVector (IntInfVector)
81 structure LargeIntArray = UnsafeMonoArray (LargeIntArray)
82 structure LargeIntVector = UnsafeMonoVector (LargeIntVector)
83 structure LargeRealArray = UnsafeMonoArray (LargeRealArray)
84 structure LargeRealVector = UnsafeMonoVector (LargeRealVector)
85 structure LargeWordArray = UnsafeMonoArray (LargeWordArray)
86 structure LargeWordVector = UnsafeMonoVector (LargeWordVector)
87 structure RealArray = UnsafeMonoArray (RealArray)
88 structure RealVector = UnsafeMonoVector (RealVector)
89 structure Real32Array = UnsafeMonoArray (Real32Array)
90 structure Real32Vector = UnsafeMonoVector (Real32Vector)
91 structure Real64Array = UnsafeMonoArray (Real64Array)
92 structure Real64Vector = UnsafeMonoVector (Real64Vector)
93 structure Vector =
94 struct
95 val sub = Vector.unsafeSub
96 end
97 structure WordArray = UnsafeMonoArray (WordArray)
98 structure WordVector = UnsafeMonoVector (WordVector)
99 structure Word8Array = UnsafeMonoArray (Word8Array)
100 structure Word8Vector = UnsafeMonoVector (Word8Vector)
101 structure Word16Array = UnsafeMonoArray (Word16Array)
102 structure Word16Vector = UnsafeMonoVector (Word16Vector)
103 structure Word32Array = UnsafeMonoArray (Word32Array)
104 structure Word32Vector = UnsafeMonoVector (Word32Vector)
105 structure Word64Array = UnsafeMonoArray (Word64Array)
106 structure Word64Vector = UnsafeMonoVector (Word64Vector)
107 structure PackReal32Big = UnsafePackReal(PackReal32Big)
108 structure PackReal32Little = UnsafePackReal(PackReal32Little)
109 structure PackReal64Big = UnsafePackReal(PackReal64Big)
110 structure PackReal64Little = UnsafePackReal(PackReal64Little)
111 structure PackRealBig = UnsafePackReal(PackRealBig)
112 structure PackRealLittle = UnsafePackReal(PackRealLittle)
113 structure PackWord16Big = UnsafePackWord(PackWord16Big)
114 structure PackWord16Little = UnsafePackWord(PackWord16Little)
115 structure PackWord32Big = UnsafePackWord(PackWord32Big)
116 structure PackWord32Little = UnsafePackWord(PackWord32Little)
117 structure PackWord64Big = UnsafePackWord(PackWord64Big)
118 structure PackWord64Little = UnsafePackWord(PackWord64Little)
119 end