Documentation ¶
Overview ¶
Package ilist provides the implementation of intrusive linked lists.
Index ¶
- type Entry
- type Linker
- type List
- func (l *List) Back() Linker
- func (l *List) Empty() bool
- func (l *List) Front() Linker
- func (l *List) InsertAfter(b, e Linker)
- func (l *List) InsertBefore(a, e Linker)
- func (l *List) PushBack(e Linker)
- func (l *List) PushBackList(m *List)
- func (l *List) PushFront(e Linker)
- func (l *List) Remove(e Linker)
- func (l *List) Reset()
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Entry ¶
type Entry struct {
// contains filtered or unexported fields
}
Entry is a default implementation of Linker. Users can add anonymous fields of this type to their structs to make them automatically implement the methods needed by List.
type Linker ¶
Linker is the interface that objects must implement if they want to be added to and/or removed from List objects.
N.B. When substituted in a template instantiation, Linker doesn't need to be an interface, and in most cases won't be.
type List ¶
type List struct {
// contains filtered or unexported fields
}
List is an intrusive list. Entries can be added to or removed from the list in O(1) time and with no additional memory allocations.
The zero value for List is an empty list ready to use.
To iterate over a list (where l is a List):
for e := l.Front(); e != nil; e = e.Next() { // do something with e. }
func (*List) InsertBefore ¶
InsertBefore inserts e before a.
func (*List) PushBackList ¶
PushBackList inserts list m at the end of list l, emptying m.