blob: 79c524b3a3b7ba2ca2cd17a5456106f9b5911704 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
## std.mem: Unsafe functions for working with raw memory.
## Raw pointers. Extremely unsafe.
## While they are removed from the memory model by default (and hence can
## cause undefined behavior), pointers must know what *type* they point at.
## This cuts down on errors somewhat - not much, but somewhat.
pub type ptr[T] =
addr: uint
## Heap-allocated, memory-safe references.
pub type ref[T]
pub type unique[T]
## Sets the sizeof(T) bytes following data + offset * sizeof(T) to T.
## Extremely unsafe.
pub func raw_set[T](data: ptr[T], val: T, offset: uint = 0) =
...
## Gets the value at data + offset * sizeof(T), and interprets it as type T.
## Extremely unsafe.
pub func raw_get[T](data: ptr[T], offset: uint = 0) =
...
## Returns a pointer offset by offset * sizeof(T).
## Extremely unsafe.
pub func raw_offset[T](data: ptr[T], offset: uint): ptr[T] =
...
pub func malloc[T](size: uint = sizeof(T)): ptr[T] =
...
pub func calloc[T](size: uint = sizeof(T)): ptr[T] =
...
pub func realloc[T](data: ptr[T]): ptr[T] =
...
|