From 28719ac72638305cbb596cbe7debad87b96da35d Mon Sep 17 00:00:00 2001 From: Drew Galbraith Date: Wed, 15 Nov 2023 18:59:12 -0800 Subject: [PATCH] [Glacier] Format LinkedList code. --- lib/glacier/container/linked_list.h | 102 ++++++++++++++++------------ 1 file changed, 59 insertions(+), 43 deletions(-) diff --git a/lib/glacier/container/linked_list.h b/lib/glacier/container/linked_list.h index eda0a74..e5fd24f 100644 --- a/lib/glacier/container/linked_list.h +++ b/lib/glacier/container/linked_list.h @@ -12,56 +12,23 @@ class LinkedList { LinkedList() {} LinkedList(const LinkedList&) = delete; + LinkedList(LinkedList&&) = delete; + // Accessors. bool empty() const { return size_ == 0; } uint64_t size() const { return size_; } - void PushFront(const T& item) { - ListItem* new_item = new ListItem{ - .item = item, - .next = front_, - }; - front_ = new_item; - size_++; - } - void PushFront(T&& item) { - ListItem* new_item = new ListItem{ - .item = glcr::Move(item), - .next = front_, - }; - front_ = new_item; - size_++; - } - - void PushBack(const T& item) { - ListItem* new_item = new ListItem{ - .item = item, - .next = nullptr, - }; - PushBackInternal(new_item); - } - - void PushBack(T&& item) { - ListItem* new_item = new ListItem{ - .item = glcr::Move(item), - .next = nullptr, - }; - PushBackInternal(new_item); - } - - T PopFront() { - size_--; - - ListItem* old_front = front_; - front_ = front_->next; - T ret = glcr::Move(old_front->item); - delete old_front; - return ret; - } - T& PeekFront() { return front_->item; } const T& PeekFront() const { return front_->item; } + T PopFront(); + + void PushFront(const T& item); + void PushFront(T&& item); + + void PushBack(const T& item); + void PushBack(T&& item); + struct ListItem { T item; ListItem* next; @@ -107,4 +74,53 @@ class LinkedList { } }; +template +void LinkedList::PushFront(const T& item) { + ListItem* new_item = new ListItem{ + .item = item, + .next = front_, + }; + front_ = new_item; + size_++; +} + +template +void LinkedList::PushFront(T&& item) { + ListItem* new_item = new ListItem{ + .item = glcr::Move(item), + .next = front_, + }; + front_ = new_item; + size_++; +} + +template +void LinkedList::PushBack(const T& item) { + ListItem* new_item = new ListItem{ + .item = item, + .next = nullptr, + }; + PushBackInternal(new_item); +} + +template +void LinkedList::PushBack(T&& item) { + ListItem* new_item = new ListItem{ + .item = glcr::Move(item), + .next = nullptr, + }; + PushBackInternal(new_item); +} + +template +T LinkedList::PopFront() { + size_--; + + ListItem* old_front = front_; + front_ = front_->next; + T ret = Move(old_front->item); + delete old_front; + return Move(ret); +} + } // namespace glcr