## 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] = ...