Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Annotation of /sml/releases/release-110.35/src/ml-nlffi-lib/memory/memory.sig
ViewVC logotype

Annotation of /sml/releases/release-110.35/src/ml-nlffi-lib/memory/memory.sig

Parent Directory Parent Directory | Revision Log Revision Log


Revision 917 - (view) (download) (as text)

1 : blume 828 (*
2 :     * Primitives for "raw" memory access.
3 :     *
4 :     * (C) 2001, Lucent Technologies, Bell Laboratories
5 :     *
6 :     * author: Matthias Blume (blume@kurims.kyoto-u.ac.jp)
7 :     *)
8 :     signature CMEMORY = sig
9 :     type addr
10 :     val null : addr
11 :     val isNull : addr -> bool
12 :     val ++ : addr * int -> addr
13 :     val -- : addr * addr -> int
14 :     val compare : addr * addr -> order
15 :     val bcopy : { from: addr, to: addr, bytes: word } -> unit
16 :     val alloc : word -> addr option
17 :     val free : addr -> unit
18 :    
19 :     (* actual sizes of C types (not their ML representations) in bytes *)
20 :     val addr_size : word
21 :     val char_size : word
22 :     val short_size : word
23 :     val int_size : word
24 :     val long_size : word
25 :     val float_size : word
26 :     val double_size : word
27 :    
28 :     (* fetching from memory *)
29 :     val load_addr : addr -> addr
30 :     val load_schar : addr -> MLRep.SChar.int
31 :     val load_uchar : addr -> MLRep.UChar.word
32 :     val load_sshort : addr-> MLRep.SShort.int
33 :     val load_ushort : addr-> MLRep.UShort.word
34 :     val load_sint : addr -> MLRep.SInt.int
35 :     val load_uint : addr -> MLRep.UInt.word
36 :     val load_slong : addr -> MLRep.SLong.int
37 :     val load_ulong : addr -> MLRep.ULong.word
38 :     val load_float : addr -> MLRep.Float.real
39 :     val load_double : addr -> MLRep.Double.real
40 :    
41 :     (* storing into memory *)
42 :     val store_addr : addr * addr -> unit
43 :     val store_schar : addr * MLRep.SChar.int -> unit
44 :     val store_uchar : addr * MLRep.UChar.word -> unit
45 :     val store_sshort : addr * MLRep.SShort.int -> unit
46 :     val store_ushort : addr * MLRep.UShort.word -> unit
47 :     val store_sint : addr * MLRep.SInt.int -> unit
48 :     val store_uint : addr * MLRep.UInt.word -> unit
49 :     val store_slong : addr * MLRep.SLong.int -> unit
50 :     val store_ulong : addr * MLRep.ULong.word -> unit
51 :     val store_float : addr * MLRep.Float.real -> unit
52 :     val store_double : addr * MLRep.Double.real -> unit
53 :    
54 :     val int_bits : word
55 :    
56 :     (* types used in C calling convention *)
57 :     type cc_addr
58 :     type cc_schar
59 :     type cc_uchar
60 :     type cc_sint
61 :     type cc_uint
62 :     type cc_sshort
63 :     type cc_ushort
64 :     type cc_slong
65 :     type cc_ulong
66 :     type cc_float
67 :     type cc_double
68 :    
69 :     (* wrapping and unwrapping for cc types *)
70 :     val wrap_addr : addr -> cc_addr
71 :     val wrap_schar : MLRep.SChar.int -> cc_schar
72 :     val wrap_uchar : MLRep.UChar.word -> cc_uchar
73 :     val wrap_sint : MLRep.SInt.int -> cc_sint
74 :     val wrap_uint : MLRep.UInt.word -> cc_uint
75 :     val wrap_sshort : MLRep.SShort.int -> cc_sshort
76 :     val wrap_ushort : MLRep.UShort.word -> cc_ushort
77 :     val wrap_slong : MLRep.SLong.int -> cc_slong
78 :     val wrap_ulong : MLRep.ULong.word -> cc_ulong
79 :     val wrap_float : MLRep.Float.real -> cc_float
80 :     val wrap_double : MLRep.Double.real -> cc_double
81 :    
82 :     val unwrap_addr : cc_addr -> addr
83 :     val unwrap_schar : cc_schar -> MLRep.SChar.int
84 :     val unwrap_uchar : cc_uchar -> MLRep.UChar.word
85 :     val unwrap_sint : cc_sint -> MLRep.SInt.int
86 :     val unwrap_uint : cc_uint -> MLRep.UInt.word
87 :     val unwrap_sshort : cc_sshort -> MLRep.SShort.int
88 :     val unwrap_ushort : cc_ushort -> MLRep.UShort.word
89 :     val unwrap_slong : cc_slong -> MLRep.SLong.int
90 :     val unwrap_ulong : cc_ulong -> MLRep.ULong.word
91 :     val unwrap_float : cc_float -> MLRep.Float.real
92 :     val unwrap_double : cc_double -> MLRep.Double.real
93 :     end

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0