Import Upstream version 20180207
[hcoop/debian/mlton.git] / basis-library / c / pointer.sml
CommitLineData
7f918cf1
CE
1(* Copyright (C) 2010 Matthew Fluet.
2 *
3 * MLton is released under a BSD-style license.
4 * See the file MLton-LICENSE for details.
5 *)
6
7structure C_Pointer : C_POINTER =
8struct
9
10open Primitive.MLton.Pointer
11
12val sizeofPointer = C_Size.div (C_Size.fromInt C_Size.wordSize, 0w8)
13
14local
15 structure S =
16 C_SChar_ChooseIntN
17 (type 'a t = t * C_Ptrdiff.t -> 'a
18 val fInt8 = getInt8
19 val fInt16 = getInt16
20 val fInt32 = getInt32
21 val fInt64 = getInt64)
22in
23 val getC_SChar = S.f
24end
25local
26 structure S =
27 C_UChar_ChooseWordN
28 (type 'a t = t * C_Ptrdiff.t -> 'a
29 val fWord8 = getWord8
30 val fWord16 = getWord16
31 val fWord32 = getWord32
32 val fWord64 = getWord64)
33in
34 val getC_UChar = S.f
35end
36
37local
38 structure S =
39 C_SShort_ChooseIntN
40 (type 'a t = t * C_Ptrdiff.t -> 'a
41 val fInt8 = getInt8
42 val fInt16 = getInt16
43 val fInt32 = getInt32
44 val fInt64 = getInt64)
45in
46 val getC_SShort = S.f
47end
48local
49 structure S =
50 C_UShort_ChooseWordN
51 (type 'a t = t * C_Ptrdiff.t -> 'a
52 val fWord8 = getWord8
53 val fWord16 = getWord16
54 val fWord32 = getWord32
55 val fWord64 = getWord64)
56in
57 val getC_UShort = S.f
58end
59
60local
61 structure S =
62 C_SInt_ChooseIntN
63 (type 'a t = t * C_Ptrdiff.t -> 'a
64 val fInt8 = getInt8
65 val fInt16 = getInt16
66 val fInt32 = getInt32
67 val fInt64 = getInt64)
68in
69 val getC_SInt = S.f
70end
71local
72 structure S =
73 C_UInt_ChooseWordN
74 (type 'a t = t * C_Ptrdiff.t -> 'a
75 val fWord8 = getWord8
76 val fWord16 = getWord16
77 val fWord32 = getWord32
78 val fWord64 = getWord64)
79in
80 val getC_UInt = S.f
81end
82
83local
84 structure S =
85 C_SLong_ChooseIntN
86 (type 'a t = t * C_Ptrdiff.t -> 'a
87 val fInt8 = getInt8
88 val fInt16 = getInt16
89 val fInt32 = getInt32
90 val fInt64 = getInt64)
91in
92 val getC_SLong = S.f
93end
94local
95 structure S =
96 C_ULong_ChooseWordN
97 (type 'a t = t * C_Ptrdiff.t -> 'a
98 val fWord8 = getWord8
99 val fWord16 = getWord16
100 val fWord32 = getWord32
101 val fWord64 = getWord64)
102in
103 val getC_ULong = S.f
104end
105
106local
107 structure S =
108 C_SLongLong_ChooseIntN
109 (type 'a t = t * C_Ptrdiff.t -> 'a
110 val fInt8 = getInt8
111 val fInt16 = getInt16
112 val fInt32 = getInt32
113 val fInt64 = getInt64)
114in
115 val getC_SLongLong = S.f
116end
117local
118 structure S =
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)
125in
126 val getC_ULongLong = S.f
127end
128
129local
130 structure S =
131 C_Float_ChooseRealN
132 (type 'a t = t * C_Ptrdiff.t -> 'a
133 val fReal32 = getReal32
134 val fReal64 = getReal64)
135in
136 val getC_Float = S.f
137end
138local
139 structure S =
140 C_Double_ChooseRealN
141 (type 'a t = t * C_Ptrdiff.t -> 'a
142 val fReal32 = getReal32
143 val fReal64 = getReal64)
144in
145 val getC_Double = S.f
146end
147
148local
149 structure S =
150 C_Size_ChooseWordN
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)
156in
157 val getC_Size = S.f
158end
159local
160 structure S =
161 C_Ptrdiff_ChooseIntN
162 (type 'a t = t * C_Ptrdiff.t -> 'a
163 val fInt8 = getInt8
164 val fInt16 = getInt16
165 val fInt32 = getInt32
166 val fInt64 = getInt64)
167in
168 val getC_Ptrdiff = S.f
169end
170
171local
172 structure S =
173 C_Intmax_ChooseIntN
174 (type 'a t = t * C_Ptrdiff.t -> 'a
175 val fInt8 = getInt8
176 val fInt16 = getInt16
177 val fInt32 = getInt32
178 val fInt64 = getInt64)
179in
180 val getC_Intmax = S.f
181end
182local
183 structure S =
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)
190in
191 val getC_UIntmax = S.f
192end
193
194local
195 structure S =
196 C_Intptr_ChooseIntN
197 (type 'a t = t * C_Ptrdiff.t -> 'a
198 val fInt8 = getInt8
199 val fInt16 = getInt16
200 val fInt32 = getInt32
201 val fInt64 = getInt64)
202in
203 val getC_Intptr = S.f
204end
205local
206 structure S =
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)
213in
214 val getC_UIntptr = S.f
215end
216
217val getC_Pointer = getCPointer
218
219
220local
221 structure S =
222 C_SChar_ChooseIntN
223 (type 'a t = t * C_Ptrdiff.t * 'a -> unit
224 val fInt8 = setInt8
225 val fInt16 = setInt16
226 val fInt32 = setInt32
227 val fInt64 = setInt64)
228in
229 val setC_SChar = S.f
230end
231local
232 structure S =
233 C_UChar_ChooseWordN
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)
239in
240 val setC_UChar = S.f
241end
242
243local
244 structure S =
245 C_SShort_ChooseIntN
246 (type 'a t = t * C_Ptrdiff.t * 'a -> unit
247 val fInt8 = setInt8
248 val fInt16 = setInt16
249 val fInt32 = setInt32
250 val fInt64 = setInt64)
251in
252 val setC_SShort = S.f
253end
254local
255 structure S =
256 C_UShort_ChooseWordN
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)
262in
263 val setC_UShort = S.f
264end
265
266local
267 structure S =
268 C_SInt_ChooseIntN
269 (type 'a t = t * C_Ptrdiff.t * 'a -> unit
270 val fInt8 = setInt8
271 val fInt16 = setInt16
272 val fInt32 = setInt32
273 val fInt64 = setInt64)
274in
275 val setC_SInt = S.f
276end
277local
278 structure S =
279 C_UInt_ChooseWordN
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)
285in
286 val setC_UInt = S.f
287end
288
289local
290 structure S =
291 C_SLong_ChooseIntN
292 (type 'a t = t * C_Ptrdiff.t * 'a -> unit
293 val fInt8 = setInt8
294 val fInt16 = setInt16
295 val fInt32 = setInt32
296 val fInt64 = setInt64)
297in
298 val setC_SLong = S.f
299end
300local
301 structure S =
302 C_ULong_ChooseWordN
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)
308in
309 val setC_ULong = S.f
310end
311
312local
313 structure S =
314 C_SLongLong_ChooseIntN
315 (type 'a t = t * C_Ptrdiff.t * 'a -> unit
316 val fInt8 = setInt8
317 val fInt16 = setInt16
318 val fInt32 = setInt32
319 val fInt64 = setInt64)
320in
321 val setC_SLongLong = S.f
322end
323local
324 structure S =
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)
331in
332 val setC_ULongLong = S.f
333end
334
335local
336 structure S =
337 C_Float_ChooseRealN
338 (type 'a t = t * C_Ptrdiff.t * 'a -> unit
339 val fReal32 = setReal32
340 val fReal64 = setReal64)
341in
342 val setC_Float = S.f
343end
344local
345 structure S =
346 C_Double_ChooseRealN
347 (type 'a t = t * C_Ptrdiff.t * 'a -> unit
348 val fReal32 = setReal32
349 val fReal64 = setReal64)
350in
351 val setC_Double = S.f
352end
353
354local
355 structure S =
356 C_Size_ChooseWordN
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)
362in
363 val setC_Size = S.f
364end
365local
366 structure S =
367 C_Ptrdiff_ChooseIntN
368 (type 'a t = t * C_Ptrdiff.t * 'a -> unit
369 val fInt8 = setInt8
370 val fInt16 = setInt16
371 val fInt32 = setInt32
372 val fInt64 = setInt64)
373in
374 val setC_Ptrdiff = S.f
375end
376
377local
378 structure S =
379 C_Intmax_ChooseIntN
380 (type 'a t = t * C_Ptrdiff.t * 'a -> unit
381 val fInt8 = setInt8
382 val fInt16 = setInt16
383 val fInt32 = setInt32
384 val fInt64 = setInt64)
385in
386 val setC_Intmax = S.f
387end
388local
389 structure S =
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)
396in
397 val setC_UIntmax = S.f
398end
399
400local
401 structure S =
402 C_Intptr_ChooseIntN
403 (type 'a t = t * C_Ptrdiff.t * 'a -> unit
404 val fInt8 = setInt8
405 val fInt16 = setInt16
406 val fInt32 = setInt32
407 val fInt64 = setInt64)
408in
409 val setC_Intptr = S.f
410end
411local
412 structure S =
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)
419in
420 val setC_UIntptr = S.f
421end
422
423val setC_Pointer = setCPointer
424
425
426end