# Like standard Array or LinkedList, CircularList is a Sequence.
super Sequence[E]
- # NaiveCollection contains working (but inefficient) implementation of
- # the methods of Collection.
- super NaiveCollection[E]
-
# The first node of the list if any
# The special case of an empty list is handled by a null node
private var node: nullable CLNode[E] = null
private class CircularListIterator[E]
super IndexedIterator[E]
- redef var key: Int
+ redef var index: Int = 0
# The current node pointed.
# Is null if the list is empty.
- var node: nullable CLNode[E]
+ var node: nullable CLNode[E] is noinit
# The list iterated.
var list: CircularList[E]
do
# Empty lists are not OK.
# Pointing again the first node is not OK.
- return self.node != null and (self.key == 0 or self.node != self.list.node)
+ return self.node != null and (self.index == 0 or self.node != self.list.node)
end
redef fun next
do
self.node = self.node.next
- self.key += 1
+ self.index += 1
end
redef fun item do return self.node.item
- init(list: CircularList[E])
+ init
do
self.node = list.node
- self.list = list
- self.key = 0
end
end