-
Notifications
You must be signed in to change notification settings - Fork 0
/
lister.go
70 lines (51 loc) · 2.02 KB
/
lister.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package list
type Lister[T any] interface {
/* Sets the equality comparer to the given function */
SetEqualityComparer(equals func(*T, *T) bool)
/* Retrieves and returns a reference to the element at the given index */
At(index int) *T
/* Sets the given value at the given index */
Set(index int, value T)
/* Returns the size of the List */
Size() int
/* Returns true if the list empty. Otherwise, false */
Empty() bool
/* Returns a reference to the value at the front of the list */
Front() *T
/* Returns a reference to the value at the back of the list */
Back() *T
/* Appends the given value to the back of the list */
Add(element T) bool
/* Removes the last element of the list */
RemoveBack()
/* Inserts the given value at the given index */
Insert(index int, value T) bool
/* Adds the given value to the front of the list */
AddToFront(element T)
/* Removes the first element of the list */
RemoveFront()
/*
Removes the first occurrence of the element if found. Returns true if the given element was found and
removed. Otherwise, false
*/
Remove(element T) bool
/* Removes the element at the given index. Panics if the given index is out of range */
RemoveAt(index int)
/*
Returns the index of the first occurrence of the given value. Returns -1 if the element is not found.
Equality is determined by the equality comparer set either automatically (because the types of the
the elements are "comparable") or set manually (through Lister.SetEqualityComparer)
*/
IndexOf(element T) int
/* Returns true if the given value exists in the list. Otherwise, false */
Contains(element T) bool
/*
Returns a sub list of the current list from "start" index (inclusive) to "end" index (exclusive).
The returned sub list is a new, copied list of the currrent list.
*/
SubList(start int, end int) Lister[T]
/* Empties the list. How the emptying is performed depends on the implementation */
Clear()
/* Iterates through each element in the list and executes the given function */
ForEach(do func(*T))
}