File indexing completed on 2024-03-24 17:26:35
0001 /* 0002 This file is part of the Okteta Core library, made within the KDE community. 0003 0004 SPDX-FileCopyrightText: 2008 Friedrich W. H. Kossebau <kossebau@kde.org> 0005 0006 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0007 */ 0008 0009 #ifndef OKTETA_ARRAYCHANGEMETRICSLIST_HPP 0010 #define OKTETA_ARRAYCHANGEMETRICSLIST_HPP 0011 0012 // lib 0013 #include "arraychangemetrics.hpp" 0014 // 0015 #include <QVector> 0016 0017 namespace Okteta { 0018 0019 // TODO: do we need the invalid status? 0020 class ArrayChangeMetricsList : public QVector<ArrayChangeMetrics> 0021 { 0022 public: 0023 static ArrayChangeMetricsList oneReplacement(Address offset, Size removeLength, Size insertLength); 0024 static ArrayChangeMetricsList oneSwapping(Address firstOffset, Size secondOffset, Size secondLength); 0025 0026 public: 0027 ArrayChangeMetricsList(); 0028 explicit ArrayChangeMetricsList(const ArrayChangeMetrics& metrics); 0029 ArrayChangeMetricsList(const ArrayChangeMetricsList&) = default; 0030 0031 ~ArrayChangeMetricsList() = default; 0032 0033 ArrayChangeMetricsList& operator=(const ArrayChangeMetricsList&) = delete; 0034 }; 0035 0036 inline ArrayChangeMetricsList ArrayChangeMetricsList::oneReplacement(Address offset, Size removeLength, Size insertLength) 0037 { 0038 return ArrayChangeMetricsList(ArrayChangeMetrics::asReplacement(offset, removeLength, insertLength)); 0039 } 0040 0041 inline ArrayChangeMetricsList ArrayChangeMetricsList::oneSwapping(Address firstOffset, Size secondOffset, Size secondLength) 0042 { 0043 return ArrayChangeMetricsList(ArrayChangeMetrics::asSwapping(firstOffset, secondOffset, secondLength)); 0044 } 0045 0046 inline ArrayChangeMetricsList::ArrayChangeMetricsList() = default; 0047 inline ArrayChangeMetricsList::ArrayChangeMetricsList(const ArrayChangeMetrics& metrics) 0048 { 0049 append(metrics); 0050 } 0051 0052 } 0053 0054 #endif