diff --git a/vlib/datatypes/set.v b/vlib/datatypes/set.v index 936f97fb9b..3286ba2722 100644 --- a/vlib/datatypes/set.v +++ b/vlib/datatypes/set.v @@ -6,22 +6,22 @@ mut: } // checks the element is exists. -fn (set Set) exists(element T) bool { +pub fn (set Set) exists(element T) bool { return element in set.elements } // adds the element to set, if it is not present already. -fn (mut set Set) add(element T) { +pub fn (mut set Set) add(element T) { set.elements[element] = 1 } // removes the element from set. -fn (mut set Set) remove(element T) { +pub fn (mut set Set) remove(element T) { set.elements.delete(element) } // pick returns an arbitrary element of set, if set is not empty. -fn (mut set Set) pick() ?T { +pub fn (mut set Set) pick() ?T { for k, _ in set.elements { return k } @@ -29,25 +29,25 @@ fn (mut set Set) pick() ?T { } // rest returns the set consisting of all elements except for the arbitrary element. -fn (mut set Set) rest() ?[]T { +pub fn (mut set Set) rest() ?[]T { element := set.pick()? return set.elements.keys().filter(it != element) } // pop returns an arbitrary element and deleting it from set. -fn (mut set Set) pop() ?T { +pub fn (mut set Set) pop() ?T { element := set.pick()? set.elements.delete(element) return element } // delete all elements of set. -fn (mut set Set) clear() { +pub fn (mut set Set) clear() { set.elements = map[T]u8{} } // checks whether the two given sets are equal (i.e. contain all and only the same elements). -fn (mut l Set) equal(r Set) bool { +pub fn (mut l Set) equal(r Set) bool { if l.elements.len != r.elements.len { return false } @@ -60,31 +60,31 @@ fn (mut l Set) equal(r Set) bool { } // checks whether the set is empty. -fn (mut set Set) is_empty() bool { +pub fn (mut set Set) is_empty() bool { return set.size() == 0 } // size returns the number of elements in the set. -fn (mut set Set) size() int { +pub fn (mut set Set) size() int { return set.elements.len } // copy returns a copy of all the elements in the set. -fn (mut set Set) copy() Set { +pub fn (mut set Set) copy() Set { return Set{ elements: set.elements.clone() } } // add_all adds the whole `elements` array to the set -fn (mut set Set) add_all(elements []T) { +pub fn (mut set Set) add_all(elements []T) { for element in elements { set.add(element) } } // @union returns the union of the two sets. -fn (mut l Set) @union(r Set) Set { +pub fn (mut l Set) @union(r Set) Set { mut set := l for e, _ in r.elements { set.add(e) @@ -93,7 +93,7 @@ fn (mut l Set) @union(r Set) Set { } // intersection returns the intersection of sets. -fn (mut l Set) intersection(r Set) Set { +pub fn (mut l Set) intersection(r Set) Set { mut set := l for e, _ in l.elements { if !r.exists(e) { @@ -109,7 +109,7 @@ fn (mut l Set) intersection(r Set) Set { } // difference returns the difference of sets. -fn (mut l Set) difference(r Set) Set { +pub fn (mut l Set) difference(r Set) Set { mut set := l for e, _ in l.elements { if r.exists(e) { @@ -120,7 +120,7 @@ fn (mut l Set) difference(r Set) Set { } // subset returns true if the set `r` is a subset of the set `l`. -fn (mut l Set) subset(r Set) bool { +pub fn (mut l Set) subset(r Set) bool { for e, _ in r.elements { if e !in l.elements { return false