File indexing completed on 2024-05-12 04:37:43
0001 /* 0002 SPDX-FileCopyrightText: 2010 Aleix Pol Gonzalez <aleixpol@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-only 0005 */ 0006 0007 #include "dataaccessrepository.h" 0008 0009 namespace KDevelop { 0010 class DataAccessRepositoryPrivate 0011 { 0012 public: 0013 QList<DataAccess*> m_modifications; 0014 }; 0015 0016 DataAccessRepository::DataAccessRepository() 0017 : d_ptr(new DataAccessRepositoryPrivate) 0018 {} 0019 0020 DataAccessRepository::~DataAccessRepository() 0021 { 0022 clear(); 0023 } 0024 0025 void DataAccessRepository::addModification(const CursorInRevision& cursor, DataAccess::DataAccessFlags flags, 0026 const KDevelop::RangeInRevision& range) 0027 { 0028 Q_D(DataAccessRepository); 0029 0030 Q_ASSERT(!range.isValid() || flags == DataAccess::Write); 0031 d->m_modifications.append(new DataAccess(cursor, flags, range)); 0032 } 0033 0034 void DataAccessRepository::clear() 0035 { 0036 Q_D(DataAccessRepository); 0037 0038 qDeleteAll(d->m_modifications); 0039 d->m_modifications.clear(); 0040 } 0041 0042 QList<DataAccess*> DataAccessRepository::modifications() const 0043 { 0044 Q_D(const DataAccessRepository); 0045 0046 return d->m_modifications; 0047 } 0048 0049 DataAccess* DataAccessRepository::accessAt(const CursorInRevision& cursor) const 0050 { 0051 Q_D(const DataAccessRepository); 0052 0053 auto it = std::find_if(d->m_modifications.constBegin(), d->m_modifications.constEnd(), [&](DataAccess* a) { 0054 return (a->pos() == cursor); 0055 }); 0056 0057 return (it != d->m_modifications.constEnd()) ? *it : nullptr; 0058 } 0059 0060 QList<DataAccess*> DataAccessRepository::accessesInRange(const RangeInRevision& range) const 0061 { 0062 Q_D(const DataAccessRepository); 0063 0064 QList<DataAccess*> ret; 0065 for (DataAccess* a : qAsConst(d->m_modifications)) { 0066 if (range.contains(a->pos())) 0067 ret += a; 0068 } 0069 0070 return ret; 0071 } 0072 }