| Index: src/pdf/SkSinglyLinkedList.h
|
| diff --git a/src/pdf/SkSinglyLinkedList.h b/src/pdf/SkSinglyLinkedList.h
|
| deleted file mode 100644
|
| index c7101141d6421b1b0cbb2691e56002bc99a1f3fb..0000000000000000000000000000000000000000
|
| --- a/src/pdf/SkSinglyLinkedList.h
|
| +++ /dev/null
|
| @@ -1,96 +0,0 @@
|
| -/*
|
| - * Copyright 2016 Google Inc.
|
| - *
|
| - * Use of this source code is governed by a BSD-style license that can be
|
| - * found in the LICENSE file.
|
| - */
|
| -#ifndef SkSinglyLinkedList_DEFINED
|
| -#define SkSinglyLinkedList_DEFINED
|
| -
|
| -#include <utility>
|
| -
|
| -#include "SkTypes.h"
|
| -
|
| -template <typename T> class SkSinglyLinkedList {
|
| - struct Node;
|
| -public:
|
| - SkSinglyLinkedList() : fHead(nullptr), fTail(nullptr) {}
|
| - ~SkSinglyLinkedList() { this->reset(); }
|
| - void reset() {
|
| - SkASSERT(fHead != nullptr || nullptr == fTail);
|
| - // Use a while loop rather than recursion to avoid stack overflow.
|
| - Node* node = fHead;
|
| - while (node) {
|
| - Node* next = node->fNext;
|
| - SkASSERT(next != nullptr || node == fTail);
|
| - delete node;
|
| - node = next;
|
| - }
|
| - fHead = nullptr;
|
| - fTail = nullptr;
|
| - }
|
| - T* back() { return fTail ? &fTail->fData : nullptr; }
|
| - T* front() { return fHead ? &fHead->fData : nullptr; }
|
| - #ifdef SK_DEBUG
|
| - int count() { // O(n), debug only.
|
| - int count = 0;
|
| - for (Node* node = fHead; node; node = node->fNext) {
|
| - ++count;
|
| - }
|
| - return count;
|
| - }
|
| - #endif
|
| - void pop_front() {
|
| - if (Node* node = fHead) {
|
| - fHead = node->fNext;
|
| - delete node;
|
| - if (fHead == nullptr) {
|
| - fTail = nullptr;
|
| - }
|
| - }
|
| - }
|
| - template <class... Args> T* emplace_front(Args&&... args) {
|
| - Node* n = new Node(std::forward<Args>(args)...);
|
| - n->fNext = fHead;
|
| - if (!fTail) {
|
| - fTail = n;
|
| - SkASSERT(!fHead);
|
| - }
|
| - fHead = n;
|
| - return &n->fData;
|
| - }
|
| - template <class... Args> T* emplace_back(Args&&... args) {
|
| - Node* n = new Node(std::forward<Args>(args)...);
|
| - if (fTail) {
|
| - fTail->fNext = n;
|
| - } else {
|
| - fHead = n;
|
| - }
|
| - fTail = n;
|
| - return &n->fData;
|
| - }
|
| - class ConstIter {
|
| - public:
|
| - void operator++() { fNode = fNode->fNext; }
|
| - const T& operator*() const { return fNode->fData; }
|
| - bool operator!=(const ConstIter& rhs) const { return fNode != rhs.fNode; }
|
| - ConstIter(const Node* n) : fNode(n) {}
|
| - private:
|
| - const Node* fNode;
|
| - };
|
| - ConstIter begin() const { return ConstIter(fHead); }
|
| - ConstIter end() const { return ConstIter(nullptr); }
|
| -
|
| -private:
|
| - struct Node {
|
| - T fData;
|
| - Node* fNext;
|
| - template <class... Args>
|
| - Node(Args&&... args) : fData(std::forward<Args>(args)...), fNext(nullptr) {}
|
| - };
|
| - Node* fHead;
|
| - Node* fTail;
|
| - SkSinglyLinkedList(const SkSinglyLinkedList<T>&) = delete;
|
| - SkSinglyLinkedList& operator=(const SkSinglyLinkedList<T>&) = delete;
|
| -};
|
| -#endif // SkSinglyLinkedList_DEFINED
|
|
|