|
|
- List = {}
- local List = List
- function List.New()
- return {first = 0, last = -1}
- end
-
- function List.Size(list)
- if list.first > list.last then
- return 0
- else
- return list.last + 1 - list.first
- end
- end
-
- function List.Empty(list)
- return list.first > list.last
- end
-
- function List.Get(list, index)
- local index = list.first + index
- return list[index]
- end
-
- function List.PushFront(list, value)
- local first = list.first - 1
- list.first = first
- list[first] = value
- end
-
- function List.PushBack(list, value)
- local last = list.last + 1
- list.last = last
- list[last] = value
- end
-
- function List.PopFront(list)
- local first = list.first
- if first > list.last then LogError("list is empty") end
- local value = list[first]
- list[first] = nil -- to allow garbage collection
- list.first = first + 1
- return value
- end
-
- function List.PopBack(list)
- local last = list.last
- if list.first > last then LogError("list is empty") end
- local value = list[last]
- list[last] = nil -- to allow garbage collection
- list.last = last - 1
- return value
- end
-
- function List.GetBack(list)
- local last = list.last
- return list[last]
- end
-
- function List.GetFront(list)
- local first = list.first
- return list[first]
- end
|