Skip to content
Snippets Groups Projects
doubly_linked_list_entry.go 1.01 KiB
package datastructure

import (
	"sync"
)

type DoublyLinkedListEntry struct {
	value interface{}
	prev  *DoublyLinkedListEntry
	next  *DoublyLinkedListEntry
	mutex sync.RWMutex
}

func (entry *DoublyLinkedListEntry) GetNext() *DoublyLinkedListEntry {
	entry.mutex.RLock()
	defer entry.mutex.RUnlock()

	return entry.next
}

func (entry *DoublyLinkedListEntry) SetNext(next *DoublyLinkedListEntry) {
	entry.mutex.Lock()
	defer entry.mutex.Unlock()

	entry.next = next
}

func (entry *DoublyLinkedListEntry) GetPrev() *DoublyLinkedListEntry {
	entry.mutex.RLock()
	defer entry.mutex.RUnlock()

	return entry.prev
}

func (entry *DoublyLinkedListEntry) SetPrev(prev *DoublyLinkedListEntry) {
	entry.mutex.Lock()
	defer entry.mutex.Unlock()

	entry.prev = prev
}

func (entry *DoublyLinkedListEntry) GetValue() interface{} {
	entry.mutex.RLock()
	defer entry.mutex.RUnlock()

	return entry.value
}

func (entry *DoublyLinkedListEntry) SetValue(value interface{}) {
	entry.mutex.Lock()
	defer entry.mutex.Unlock()

	entry.value = value
}