File indexing completed on 2024-04-28 04:57:42
0001 /* 0002 * SPDX-FileCopyrightText: 2013-2016 Ivan Cukic <ivan.cukic@kde.org> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0005 */ 0006 0007 #ifndef UTILS_QSQLQUERYITERATOR_H 0008 #define UTILS_QSQLQUERYITERATOR_H 0009 0010 #include <QSqlQuery> 0011 #include <QVariant> 0012 0013 template<typename ResultSet> 0014 class NextValueIterator 0015 { 0016 public: 0017 enum Type { NormalIterator, EndIterator }; 0018 0019 NextValueIterator(ResultSet &query, Type type = NormalIterator) 0020 : m_query(query) 0021 , m_type(type) 0022 { 0023 if (type != EndIterator) { 0024 m_query.next(); 0025 } 0026 } 0027 0028 inline bool operator!=(const NextValueIterator<ResultSet> &other) const 0029 { 0030 Q_UNUSED(other); 0031 return m_query.isValid(); 0032 } 0033 0034 inline NextValueIterator<ResultSet> &operator*() 0035 { 0036 return *this; 0037 } 0038 0039 inline QVariant operator[](int index) const 0040 { 0041 return m_query.value(index); 0042 } 0043 0044 inline QVariant operator[](const QString &name) const 0045 { 0046 return m_query.value(name); 0047 } 0048 0049 inline NextValueIterator<ResultSet> &operator++() 0050 { 0051 m_query.next(); 0052 return *this; 0053 } 0054 0055 private: 0056 ResultSet &m_query; 0057 Type m_type; 0058 }; 0059 0060 NextValueIterator<QSqlQuery> begin(QSqlQuery &query); 0061 NextValueIterator<QSqlQuery> end(QSqlQuery &query); 0062 0063 #endif /* UTILS_QSQLQUERYITERATOR_H */