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