File indexing completed on 2024-04-28 05:52:31
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 KPIECETABLE_REPLACEPIECETABLECHANGE_HPP 0010 #define KPIECETABLE_REPLACEPIECETABLECHANGE_HPP 0011 0012 // lib 0013 #include "abstractpiecetablechange.hpp" 0014 #include "piecelist.hpp" 0015 0016 namespace KPieceTable { 0017 0018 /** class 0019 * @author Friedrich W. H. Kossebau 0020 */ 0021 0022 class ReplacePieceTableChange : public AbstractPieceTableChange 0023 { 0024 public: 0025 ReplacePieceTableChange(const AddressRange& removeRange, Size insertLength, Address storageOffset, 0026 const PieceList& removedPieces); 0027 ReplacePieceTableChange(const ReplacePieceTableChange&) = delete; 0028 0029 ~ReplacePieceTableChange() override; 0030 0031 ReplacePieceTableChange& operator=(const ReplacePieceTableChange&) = delete; 0032 0033 public: // AbstractPieceTableChange API 0034 int type() const override; 0035 QString description() const override; 0036 Address storageOffset() const override; 0037 bool merge(const AbstractPieceTableChange* other) override; 0038 AddressRange apply(PieceTable* pieceTable) const override; 0039 AddressRange revert(PieceTable* pieceTable) const override; 0040 ArrayChangeMetrics metrics() const override; 0041 Size dataSize() const override; 0042 0043 private: 0044 AddressRange mRemoveRange; 0045 Size mInsertLength; 0046 Address mStorageOffset; 0047 PieceList mRemovedPieces; 0048 }; 0049 0050 inline ReplacePieceTableChange::ReplacePieceTableChange(const AddressRange& removeRange, 0051 Size insertLength, Address storageOffset, 0052 const PieceList& removedPieces) 0053 : mRemoveRange(removeRange) 0054 , mInsertLength(insertLength) 0055 , mStorageOffset(storageOffset) 0056 , mRemovedPieces(removedPieces) 0057 {} 0058 0059 } 0060 0061 #endif