/* * Copyright 2015 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef SkTDPQueue_DEFINED #define SkTDPQueue_DEFINED #include "include/private/base/SkAssert.h" #include "include/private/base/SkDebug.h" #include "include/private/base/SkTDArray.h" #include "include/private/base/SkTo.h" #include "src/base/SkTSort.h" #include <utility> /** * This class implements a priority queue. T is the type of the elements in the queue. LESS is a * function that compares two Ts and returns true if the first is higher priority than the second. * * Optionally objects may know their index into the priority queue. The queue will update the index * as the objects move through the queue. This is enabled by using a non-nullptr function for INDEX. * When an INDEX function is provided random deletes from the queue are allowed using remove(). * Additionally, the * priority is allowed to change as long as priorityDidChange() is called * afterwards. In debug builds the index will be set to -1 before an element is removed from the * queue. */ template <typename T, bool (*LESS)(const T&, const T&), int* (*INDEX)(const T&) = (int* (*)(const T&))nullptr> class SkTDPQueue { … }; #endif