/* * SPDX-FileCopyrightText: 2013-2016 Ivan Cukic * * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL */ #pragma once #include #include template class NextValueIterator { public: enum Type { NormalIterator, EndIterator, }; NextValueIterator(ResultSet &query, Type type = NormalIterator) : m_query(query) , m_type(type) { if (type != EndIterator) { m_query.next(); } } inline bool operator!=(const NextValueIterator &other) const { Q_UNUSED(other); return m_query.isValid(); } inline NextValueIterator &operator*() { return *this; } inline QVariant operator[](int index) const { return m_query.value(index); } inline QVariant operator[](const QString &name) const { return m_query.value(name); } inline NextValueIterator &operator++() { m_query.next(); return *this; } private: ResultSet &m_query; Type m_type; }; NextValueIterator begin(QSqlQuery &query); NextValueIterator end(QSqlQuery &query);