Pointer[A: A]

A Pointer[A] is a raw memory pointer. It has no descriptor and thus can't be included in a union or intersection, or be a subtype of any interface. Most functions on a Pointer[A] are private to maintain memory safety.

struct ref Pointer[A: A]

Constructors

create

A null pointer.

new ref create()
: Pointer[A] ref^

Returns


_alloc

Space for len instances of A.

new ref _alloc(
  len: USize val)
: Pointer[A] ref^

Parameters

Returns


Public Functions

usize

Convert the pointer into an integer.

fun tag usize()
: USize val

Returns


is_null

Return true for a null pointer, false for anything else.

fun tag is_null()
: Bool val

Returns


eq

Return true if this address is that address.

fun tag eq(
  that: Pointer[A] tag)
: Bool val

Parameters

Returns


lt

Return true if this address is less than that address.

fun tag lt(
  that: Pointer[A] tag)
: Bool val

Parameters

Returns


ne

fun tag ne(
  that: Pointer[A] tag)
: Bool val

Parameters

Returns


le

fun tag le(
  that: Pointer[A] tag)
: Bool val

Parameters

Returns


ge

fun tag ge(
  that: Pointer[A] tag)
: Bool val

Parameters

Returns


gt

fun tag gt(
  that: Pointer[A] tag)
: Bool val

Parameters

Returns


hash

Returns a hash of the address.

fun tag hash()
: U64 val

Returns


Private Functions

_realloc

Keep the contents, but reserve space for len instances of A.

fun ref _realloc(
  len: USize val)
: Pointer[A] ref

Parameters

Returns


_unsafe

Unsafe change in reference capability.

fun tag _unsafe()
: Pointer[A] ref

Returns


_apply

Retrieve index i.

fun box _apply(
  i: USize val)
: this->A

Parameters

Returns

  • this->A

_update

Set index i and return the previous value.

fun ref _update(
  i: USize val,
  value: A!)
: A^

Parameters

Returns

  • A^

_offset

Return a pointer to the n-th element.

fun box _offset(
  n: USize val)
: this->Pointer[A] ref

Parameters

Returns


_element_size

Return the size of a single element in an array of type A.

fun tag _element_size()
: USize val

Returns


_insert

Creates space for n new elements at the head, moving following elements. The array length before this should be len, and the available space should be at least n + len.

fun ref _insert(
  n: USize val,
  len: USize val)
: Pointer[A] ref

Parameters

Returns


_delete

Delete n elements from the head of pointer, compact remaining elements of the underlying array. The array length before this should be n + len. Returns the first deleted element.

fun ref _delete(
  n: USize val,
  len: USize val)
: A^

Parameters

Returns

  • A^

_copy_to

Copy n elements from this to that.

fun box _copy_to(
  that: Pointer[this->A!] ref,
  n: USize val)
: this->Pointer[A] ref

Parameters

Returns


_consume_from

Copy n elements from that to this.

fun ref _consume_from(
  that: Pointer[A] ref^,
  n: USize val)
: Pointer[A] ref^

Parameters

Returns