A set, built on top of a HashMap. This is implemented as map of an alias of a type to itself
class ref HashSet[A: A, H: HashFunction[A!] val] is Comparable[HashSet[A, H] box] ref
Defaults to a prealloc of 8.
new ref create( prealloc: USize val = 8) : HashSet[A, H] ref^
The number of items in the set.
fun box size() : USize val
The available space in the set.
fun box space() : USize val
Return the value if its in the set, otherwise raise an error.
fun box apply( value: box->A!) : this->A ?
Checks whether the set contains the value.
fun box contains( value: box->A!) : Bool val
Remove all elements from the set.
fun ref clear() : None val
Add a value to the set.
fun ref set( value: A) : None val
Remove a value from the set.
fun ref unset( value: box->A!) : None val
Remove a value from the set and return it. Raises an error if the value wasn't in the set.
fun ref extract( value: box->A!) : A^ ?
Add everything in that to the set.
fun ref union( that: Iterator[A^] ref) : None val
Remove everything that isn't in that.
fun ref intersect[optional K: HashFunction[box->A!] val]( that: HashSet[box->A!, K] ref) : None val
Remove elements in this which are also in that. Add elements in that which are not in this.
fun ref difference( that: Iterator[A^] ref) : None val
Remove everything that is in that.
fun ref remove( that: Iterator[box->A!] ref) : None val
Add a value to the set.
fun box add[optional K: HashFunction[this->A!] val]( value: this->A!) : HashSet[this->A!, K] ref^
Remove a value from the set.
fun box sub[optional K: HashFunction[this->A!] val]( value: box->this->A!) : HashSet[this->A!, K] ref^
Create a set with the elements of both this and that.
fun box op_or[optional K: HashFunction[this->A!] val]( that: this->HashSet[A, H] ref) : HashSet[this->A!, K] ref^
Create a set with the elements that are in both this and that.
fun box op_and[optional K: HashFunction[this->A!] val]( that: this->HashSet[A, H] ref) : HashSet[this->A!, K] ref^
Create a set with the elements that are in either set but not both.
fun box op_xor[optional K: HashFunction[this->A!] val]( that: this->HashSet[A, H] ref) : HashSet[this->A!, K] ref^
Create a set with the elements of this that are not in that.
fun box without[optional K: HashFunction[this->A!] val]( that: this->HashSet[A, H] ref) : HashSet[this->A!, K] ref^
Create a clone. The element type may be different due to aliasing and viewpoint adaptation.
fun box clone[optional K: HashFunction[this->A!] val]() : HashSet[this->A!, K] ref^
Returns true if the sets contain the same elements.
fun box eq( that: HashSet[A, H] box) : Bool val
Returns false if the sets contain the same elements.
fun box ne( that: HashSet[A, H] box) : Bool val
Returns true if every element in this is also in that, and this has fewer elements than that.
fun box lt( that: HashSet[A, H] box) : Bool val
Returns true if every element in this is also in that.
fun box le( that: HashSet[A, H] box) : Bool val
Returns true if every element in that is also in this, and this has more elements than that.
fun box gt( that: HashSet[A, H] box) : Bool val
Returns true if every element in that is also in this.
fun box ge( that: HashSet[A, H] box) : Bool val
Given an index, return the next index that has a populated value. Raise an error if there is no next populated index.
fun box next_index( prev: USize val = call) : USize val ?
Returns the value at a given index. Raise an error if the index is not populated.
fun box index( i: USize val) : this->A ?
Return an iterator over the values.
fun box values() : SetValues[A, H, this->HashSet[A, H] ref] ref^
fun box compare( that: HashSet[A, H] box) : (Less val | Equal val | Greater val)
© 2016-2018, The Pony Developers
© 2014-2015, Causality Ltd.
Licensed under the BSD 2-Clause License.
https://stdlib.ponylang.io/collections-HashSet