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]
A null pointer.
new ref create() : Pointer[A] ref^
Space for len instances of A.
new ref _alloc( len: USize val) : Pointer[A] ref^
Return a tag pointer to the n-th element.
fun tag offset( n: USize val) : Pointer[A] tag
Convert the pointer into an integer.
fun tag usize() : USize val
Return true for a null pointer, false for anything else.
fun tag is_null() : Bool val
Return true if this address is that address.
fun tag eq( that: Pointer[A] tag) : Bool val
Return true if this address is less than that address.
fun tag lt( that: Pointer[A] tag) : Bool val
fun tag ne( that: Pointer[A] tag) : Bool val
fun tag le( that: Pointer[A] tag) : Bool val
fun tag ge( that: Pointer[A] tag) : Bool val
fun tag gt( that: Pointer[A] tag) : Bool val
Returns a hash of the address.
fun tag hash() : USize val
Returns a 64-bit hash of the address.
fun tag hash64() : U64 val
Keep the contents, but reserve space for len instances of A.
fun ref _realloc( len: USize val) : Pointer[A] ref
Unsafe change in reference capability.
fun tag _unsafe() : Pointer[A] ref
Convert from Pointer[A] to Pointer[B].
fun box _convert[B: B]() : this->Pointer[B] ref
Retrieve index i.
fun box _apply( i: USize val) : this->A
Set index i and return the previous value.
fun ref _update( i: USize val, value: A!) : A^
Return a pointer to the n-th element.
fun box _offset( n: USize val) : this->Pointer[A] ref
Return the size of a single element in an array of type A.
fun tag _element_size() : USize val
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
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^
Copy n elements from this to that.
fun box _copy_to( that: Pointer[this->A!] ref, n: USize val) : this->Pointer[A] ref
© 2016-2018, The Pony Developers
© 2014-2015, Causality Ltd.
Licensed under the BSD 2-Clause License.
https://stdlib.ponylang.io/builtin-Pointer