1 (* Copyright (C
) 2010 Matthew Fluet
.
3 * MLton is released under a BSD
-style license
.
4 * See the file MLton
-LICENSE for details
.
7 structure C_Pointer
: C_POINTER
=
10 open Primitive
.MLton
.Pointer
12 val sizeofPointer
= C_Size
.div (C_Size
.fromInt C_Size
.wordSize
, 0w8
)
17 (type 'a t
= t
* C_Ptrdiff
.t
-> 'a
21 val fInt64
= getInt64
)
28 (type 'a t
= t
* C_Ptrdiff
.t
-> 'a
30 val fWord16
= getWord16
31 val fWord32
= getWord32
32 val fWord64
= getWord64
)
40 (type 'a t
= t
* C_Ptrdiff
.t
-> 'a
44 val fInt64
= getInt64
)
51 (type 'a t
= t
* C_Ptrdiff
.t
-> 'a
53 val fWord16
= getWord16
54 val fWord32
= getWord32
55 val fWord64
= getWord64
)
63 (type 'a t
= t
* C_Ptrdiff
.t
-> 'a
67 val fInt64
= getInt64
)
74 (type 'a t
= t
* C_Ptrdiff
.t
-> 'a
76 val fWord16
= getWord16
77 val fWord32
= getWord32
78 val fWord64
= getWord64
)
86 (type 'a t
= t
* C_Ptrdiff
.t
-> 'a
90 val fInt64
= getInt64
)
97 (type 'a t
= t
* C_Ptrdiff
.t
-> 'a
99 val fWord16
= getWord16
100 val fWord32
= getWord32
101 val fWord64
= getWord64
)
108 C_SLongLong_ChooseIntN
109 (type 'a t
= t
* C_Ptrdiff
.t
-> 'a
111 val fInt16
= getInt16
112 val fInt32
= getInt32
113 val fInt64
= getInt64
)
115 val getC_SLongLong
= S
.f
119 C_ULongLong_ChooseWordN
120 (type 'a t
= t
* C_Ptrdiff
.t
-> 'a
121 val fWord8
= getWord8
122 val fWord16
= getWord16
123 val fWord32
= getWord32
124 val fWord64
= getWord64
)
126 val getC_ULongLong
= S
.f
132 (type 'a t
= t
* C_Ptrdiff
.t
-> 'a
133 val fReal32
= getReal32
134 val fReal64
= getReal64
)
141 (type 'a t
= t
* C_Ptrdiff
.t
-> 'a
142 val fReal32
= getReal32
143 val fReal64
= getReal64
)
145 val getC_Double
= S
.f
151 (type 'a t
= t
* C_Ptrdiff
.t
-> 'a
152 val fWord8
= getWord8
153 val fWord16
= getWord16
154 val fWord32
= getWord32
155 val fWord64
= getWord64
)
162 (type 'a t
= t
* C_Ptrdiff
.t
-> 'a
164 val fInt16
= getInt16
165 val fInt32
= getInt32
166 val fInt64
= getInt64
)
168 val getC_Ptrdiff
= S
.f
174 (type 'a t
= t
* C_Ptrdiff
.t
-> 'a
176 val fInt16
= getInt16
177 val fInt32
= getInt32
178 val fInt64
= getInt64
)
180 val getC_Intmax
= S
.f
184 C_UIntmax_ChooseWordN
185 (type 'a t
= t
* C_Ptrdiff
.t
-> 'a
186 val fWord8
= getWord8
187 val fWord16
= getWord16
188 val fWord32
= getWord32
189 val fWord64
= getWord64
)
191 val getC_UIntmax
= S
.f
197 (type 'a t
= t
* C_Ptrdiff
.t
-> 'a
199 val fInt16
= getInt16
200 val fInt32
= getInt32
201 val fInt64
= getInt64
)
203 val getC_Intptr
= S
.f
207 C_UIntptr_ChooseWordN
208 (type 'a t
= t
* C_Ptrdiff
.t
-> 'a
209 val fWord8
= getWord8
210 val fWord16
= getWord16
211 val fWord32
= getWord32
212 val fWord64
= getWord64
)
214 val getC_UIntptr
= S
.f
217 val getC_Pointer
= getCPointer
223 (type 'a t
= t
* C_Ptrdiff
.t
* 'a
-> unit
225 val fInt16
= setInt16
226 val fInt32
= setInt32
227 val fInt64
= setInt64
)
234 (type 'a t
= t
* C_Ptrdiff
.t
* 'a
-> unit
235 val fWord8
= setWord8
236 val fWord16
= setWord16
237 val fWord32
= setWord32
238 val fWord64
= setWord64
)
246 (type 'a t
= t
* C_Ptrdiff
.t
* 'a
-> unit
248 val fInt16
= setInt16
249 val fInt32
= setInt32
250 val fInt64
= setInt64
)
252 val setC_SShort
= S
.f
257 (type 'a t
= t
* C_Ptrdiff
.t
* 'a
-> unit
258 val fWord8
= setWord8
259 val fWord16
= setWord16
260 val fWord32
= setWord32
261 val fWord64
= setWord64
)
263 val setC_UShort
= S
.f
269 (type 'a t
= t
* C_Ptrdiff
.t
* 'a
-> unit
271 val fInt16
= setInt16
272 val fInt32
= setInt32
273 val fInt64
= setInt64
)
280 (type 'a t
= t
* C_Ptrdiff
.t
* 'a
-> unit
281 val fWord8
= setWord8
282 val fWord16
= setWord16
283 val fWord32
= setWord32
284 val fWord64
= setWord64
)
292 (type 'a t
= t
* C_Ptrdiff
.t
* 'a
-> unit
294 val fInt16
= setInt16
295 val fInt32
= setInt32
296 val fInt64
= setInt64
)
303 (type 'a t
= t
* C_Ptrdiff
.t
* 'a
-> unit
304 val fWord8
= setWord8
305 val fWord16
= setWord16
306 val fWord32
= setWord32
307 val fWord64
= setWord64
)
314 C_SLongLong_ChooseIntN
315 (type 'a t
= t
* C_Ptrdiff
.t
* 'a
-> unit
317 val fInt16
= setInt16
318 val fInt32
= setInt32
319 val fInt64
= setInt64
)
321 val setC_SLongLong
= S
.f
325 C_ULongLong_ChooseWordN
326 (type 'a t
= t
* C_Ptrdiff
.t
* 'a
-> unit
327 val fWord8
= setWord8
328 val fWord16
= setWord16
329 val fWord32
= setWord32
330 val fWord64
= setWord64
)
332 val setC_ULongLong
= S
.f
338 (type 'a t
= t
* C_Ptrdiff
.t
* 'a
-> unit
339 val fReal32
= setReal32
340 val fReal64
= setReal64
)
347 (type 'a t
= t
* C_Ptrdiff
.t
* 'a
-> unit
348 val fReal32
= setReal32
349 val fReal64
= setReal64
)
351 val setC_Double
= S
.f
357 (type 'a t
= t
* C_Ptrdiff
.t
* 'a
-> unit
358 val fWord8
= setWord8
359 val fWord16
= setWord16
360 val fWord32
= setWord32
361 val fWord64
= setWord64
)
368 (type 'a t
= t
* C_Ptrdiff
.t
* 'a
-> unit
370 val fInt16
= setInt16
371 val fInt32
= setInt32
372 val fInt64
= setInt64
)
374 val setC_Ptrdiff
= S
.f
380 (type 'a t
= t
* C_Ptrdiff
.t
* 'a
-> unit
382 val fInt16
= setInt16
383 val fInt32
= setInt32
384 val fInt64
= setInt64
)
386 val setC_Intmax
= S
.f
390 C_UIntmax_ChooseWordN
391 (type 'a t
= t
* C_Ptrdiff
.t
* 'a
-> unit
392 val fWord8
= setWord8
393 val fWord16
= setWord16
394 val fWord32
= setWord32
395 val fWord64
= setWord64
)
397 val setC_UIntmax
= S
.f
403 (type 'a t
= t
* C_Ptrdiff
.t
* 'a
-> unit
405 val fInt16
= setInt16
406 val fInt32
= setInt32
407 val fInt64
= setInt64
)
409 val setC_Intptr
= S
.f
413 C_UIntptr_ChooseWordN
414 (type 'a t
= t
* C_Ptrdiff
.t
* 'a
-> unit
415 val fWord8
= setWord8
416 val fWord16
= setWord16
417 val fWord32
= setWord32
418 val fWord64
= setWord64
)
420 val setC_UIntptr
= S
.f
423 val setC_Pointer
= setCPointer