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