File indexing completed on 2025-03-09 04:52:25
0001 /* 0002 * This file is part of LibKGAPI library 0003 * 0004 * SPDX-FileCopyrightText: 2013 Daniel Vrátil <dvratil@redhat.com> 0005 * 0006 * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0007 */ 0008 0009 #pragma once 0010 0011 #include <QQueue> 0012 0013 template<typename T> 0014 class QueueHelper 0015 { 0016 public: 0017 explicit QueueHelper() 0018 { 0019 } 0020 virtual ~QueueHelper() 0021 { 0022 } 0023 0024 bool atEnd() const 0025 { 0026 return (m_iter == m_items.constEnd()); 0027 } 0028 0029 void currentProcessed() 0030 { 0031 ++m_iter; 0032 } 0033 0034 T current() 0035 { 0036 return *m_iter; 0037 } 0038 0039 QueueHelper &operator<<(const T &item) 0040 { 0041 m_items << item; 0042 if (m_items.count() == 1) { 0043 m_iter = m_items.constBegin(); 0044 } 0045 return *this; 0046 } 0047 0048 QueueHelper &operator<<(const QList<T> &list) 0049 { 0050 if (m_items.count() == 0) { 0051 m_items << list; 0052 m_iter = m_items.constBegin(); 0053 } else { 0054 m_items << list; 0055 } 0056 0057 return *this; 0058 } 0059 0060 void reserve(int n) 0061 { 0062 m_items.reserve(n); 0063 } 0064 0065 QueueHelper &operator=(const QList<T> &list) 0066 { 0067 m_items.clear(); 0068 m_items << list; 0069 m_iter = m_items.constBegin(); 0070 return *this; 0071 } 0072 0073 private: 0074 QQueue<T> m_items; 0075 0076 typename QList<T>::ConstIterator m_iter; 0077 };