signature MLTON_POINTER =
sig
eqtype t
val add: t * word -> t
val compare: t * t -> order
val diff: t * t -> word
val getInt8: t * int -> Int8.int
val getInt16: t * int -> Int16.int
val getInt32: t * int -> Int32.int
val getInt64: t * int -> Int64.int
val getPointer: t * int -> t
val getReal32: t * int -> Real32.real
val getReal64: t * int -> Real64.real
val getWord8: t * int -> Word8.word
val getWord16: t * int -> Word16.word
val getWord32: t * int -> Word32.word
val getWord64: t * int -> Word64.word
val null: t
val setInt8: t * int * Int8.int -> unit
val setInt16: t * int * Int16.int -> unit
val setInt32: t * int * Int32.int -> unit
val setInt64: t * int * Int64.int -> unit
val setPointer: t * int * t -> unit
val setReal32: t * int * Real32.real -> unit
val setReal64: t * int * Real64.real -> unit
val setWord8: t * int * Word8.word -> unit
val setWord16: t * int * Word16.word -> unit
val setWord32: t * int * Word32.word -> unit
val setWord64: t * int * Word64.word -> unit
val sizeofPointer: word
val sub: t * word -> t
end
-
eqtype t
the type of pointers, i.e. machine addresses.
-
add (p, w)
returns the pointer
w
bytes after thanp
. Does not check for overflow. -
compare (p1, p2)
compares the pointer
p1
to the pointerp2
(as addresses). -
diff (p1, p2)
returns the number of bytes
w
such thatadd (p2, w) = p1
. Does not check for overflow. -
get<X> (p, i)
returns the object stored at index i of the array of X objects pointed to by
p
. For example,getWord32 (p, 7)
returns the 32-bit word stored 28 bytes beyondp
. -
null
the null pointer, i.e. 0.
-
set<X> (p, i, v)
assigns
v
to the object stored at index i of the array of X objects pointed to byp
. For example,setWord32 (p, 7, w)
stores the 32-bit wordw
at the address 28 bytes beyondp
. -
sizeofPointer
size, in bytes, of a pointer.
-
sub (p, w)
returns the pointer
w
bytes beforep
. Does not check for overflow.