Commit | Line | Data |
---|---|---|
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 | ||
7 | structure C_Pointer : C_POINTER = | |
8 | struct | |
9 | ||
10 | open Primitive.MLton.Pointer | |
11 | ||
12 | val sizeofPointer = C_Size.div (C_Size.fromInt C_Size.wordSize, 0w8) | |
13 | ||
14 | local | |
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) | |
22 | in | |
23 | val getC_SChar = S.f | |
24 | end | |
25 | local | |
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) | |
33 | in | |
34 | val getC_UChar = S.f | |
35 | end | |
36 | ||
37 | local | |
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) | |
45 | in | |
46 | val getC_SShort = S.f | |
47 | end | |
48 | local | |
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) | |
56 | in | |
57 | val getC_UShort = S.f | |
58 | end | |
59 | ||
60 | local | |
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) | |
68 | in | |
69 | val getC_SInt = S.f | |
70 | end | |
71 | local | |
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) | |
79 | in | |
80 | val getC_UInt = S.f | |
81 | end | |
82 | ||
83 | local | |
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) | |
91 | in | |
92 | val getC_SLong = S.f | |
93 | end | |
94 | local | |
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) | |
102 | in | |
103 | val getC_ULong = S.f | |
104 | end | |
105 | ||
106 | local | |
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) | |
114 | in | |
115 | val getC_SLongLong = S.f | |
116 | end | |
117 | local | |
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) | |
125 | in | |
126 | val getC_ULongLong = S.f | |
127 | end | |
128 | ||
129 | local | |
130 | structure S = | |
131 | C_Float_ChooseRealN | |
132 | (type 'a t = t * C_Ptrdiff.t -> 'a | |
133 | val fReal32 = getReal32 | |
134 | val fReal64 = getReal64) | |
135 | in | |
136 | val getC_Float = S.f | |
137 | end | |
138 | local | |
139 | structure S = | |
140 | C_Double_ChooseRealN | |
141 | (type 'a t = t * C_Ptrdiff.t -> 'a | |
142 | val fReal32 = getReal32 | |
143 | val fReal64 = getReal64) | |
144 | in | |
145 | val getC_Double = S.f | |
146 | end | |
147 | ||
148 | local | |
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) | |
156 | in | |
157 | val getC_Size = S.f | |
158 | end | |
159 | local | |
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) | |
167 | in | |
168 | val getC_Ptrdiff = S.f | |
169 | end | |
170 | ||
171 | local | |
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) | |
179 | in | |
180 | val getC_Intmax = S.f | |
181 | end | |
182 | local | |
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) | |
190 | in | |
191 | val getC_UIntmax = S.f | |
192 | end | |
193 | ||
194 | local | |
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) | |
202 | in | |
203 | val getC_Intptr = S.f | |
204 | end | |
205 | local | |
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) | |
213 | in | |
214 | val getC_UIntptr = S.f | |
215 | end | |
216 | ||
217 | val getC_Pointer = getCPointer | |
218 | ||
219 | ||
220 | local | |
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) | |
228 | in | |
229 | val setC_SChar = S.f | |
230 | end | |
231 | local | |
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) | |
239 | in | |
240 | val setC_UChar = S.f | |
241 | end | |
242 | ||
243 | local | |
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) | |
251 | in | |
252 | val setC_SShort = S.f | |
253 | end | |
254 | local | |
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) | |
262 | in | |
263 | val setC_UShort = S.f | |
264 | end | |
265 | ||
266 | local | |
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) | |
274 | in | |
275 | val setC_SInt = S.f | |
276 | end | |
277 | local | |
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) | |
285 | in | |
286 | val setC_UInt = S.f | |
287 | end | |
288 | ||
289 | local | |
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) | |
297 | in | |
298 | val setC_SLong = S.f | |
299 | end | |
300 | local | |
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) | |
308 | in | |
309 | val setC_ULong = S.f | |
310 | end | |
311 | ||
312 | local | |
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) | |
320 | in | |
321 | val setC_SLongLong = S.f | |
322 | end | |
323 | local | |
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) | |
331 | in | |
332 | val setC_ULongLong = S.f | |
333 | end | |
334 | ||
335 | local | |
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) | |
341 | in | |
342 | val setC_Float = S.f | |
343 | end | |
344 | local | |
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) | |
350 | in | |
351 | val setC_Double = S.f | |
352 | end | |
353 | ||
354 | local | |
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) | |
362 | in | |
363 | val setC_Size = S.f | |
364 | end | |
365 | local | |
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) | |
373 | in | |
374 | val setC_Ptrdiff = S.f | |
375 | end | |
376 | ||
377 | local | |
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) | |
385 | in | |
386 | val setC_Intmax = S.f | |
387 | end | |
388 | local | |
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) | |
396 | in | |
397 | val setC_UIntmax = S.f | |
398 | end | |
399 | ||
400 | local | |
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) | |
408 | in | |
409 | val setC_Intptr = S.f | |
410 | end | |
411 | local | |
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) | |
419 | in | |
420 | val setC_UIntptr = S.f | |
421 | end | |
422 | ||
423 | val setC_Pointer = setCPointer | |
424 | ||
425 | ||
426 | end |