123456789101112131415161718192021222324252627282930313233343536 |
- package history
- type History[T any] struct {
- elements []T
- index int
- }
- func (h *History[T]) Current() T {
- return h.elements[h.index]
- }
- func (h *History[T]) Back() {
- if h.index > 0 {
- h.index -= 1
- }
- }
- func (h *History[T]) Forward() {
- if len(h.elements) > h.index+1 {
- h.index += 1
- }
- }
- func (h *History[T]) Add(element T) {
- if h.elements == nil {
- h.elements = []T{element}
- h.index = 0
- return
- }
- h.elements = append(h.elements[:h.index+1], element)
- h.index += 1
- }
- func (h *History[T]) IsEmpty() bool {
- return len(h.elements) == 0
- }
|