File indexing completed on 2024-04-21 05:52:56

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 #include "swaprangespiecetablechange.hpp"
0010 
0011 // lib
0012 #include "piecetable.hpp"
0013 //
0014 #include <arraychangemetrics.hpp>
0015 // KF
0016 #include <KLocalizedString>
0017 
0018 namespace KPieceTable {
0019 
0020 SwapRangesPieceTableChange::~SwapRangesPieceTableChange() = default;
0021 
0022 int SwapRangesPieceTableChange::type() const { return SwapRangesId; }
0023 
0024 QString SwapRangesPieceTableChange::description() const
0025 {
0026     return i18nc("name of the change", "Swap Ranges");
0027 }
0028 
0029 AddressRange SwapRangesPieceTableChange::apply(PieceTable* pieceTable) const
0030 {
0031     pieceTable->swap(mFirstStart, mSecondRange);
0032 
0033     return AddressRange(mFirstStart, mSecondRange.end());
0034 }
0035 
0036 AddressRange SwapRangesPieceTableChange::revert(PieceTable* pieceTable) const
0037 {
0038     pieceTable->swap(mFirstStart, AddressRange(mFirstStart + mSecondRange.width(), mSecondRange.end()));
0039 
0040     return AddressRange(mFirstStart, mSecondRange.end());
0041 }
0042 
0043 ArrayChangeMetrics SwapRangesPieceTableChange::metrics() const
0044 {
0045     return ArrayChangeMetrics::asSwapping(mFirstStart, mSecondRange.start(), mSecondRange.width());
0046 }
0047 
0048 }