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

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_REMOVEPIECETABLECHANGE_HPP
0010 #define KPIECETABLE_REMOVEPIECETABLECHANGE_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 RemovePieceTableChange : public AbstractPieceTableChange
0023 {
0024 public:
0025     RemovePieceTableChange(const AddressRange& removeRange, const PieceList& removedPieces);
0026     RemovePieceTableChange(const RemovePieceTableChange&) = delete;
0027 
0028     ~RemovePieceTableChange() override;
0029 
0030     RemovePieceTableChange& operator=(const RemovePieceTableChange&) = delete;
0031 
0032 public: // AbstractPieceTableChange API
0033     int type() const override;
0034     QString description() const override;
0035     bool merge(const AbstractPieceTableChange* other) override;
0036     AddressRange apply(PieceTable* pieceTable) const override;
0037     AddressRange revert(PieceTable* pieceTable) const override;
0038     ArrayChangeMetrics metrics() const override;
0039 
0040 private:
0041     AddressRange mRemoveRange;
0042     PieceList mRemovedPieces;
0043 };
0044 
0045 inline RemovePieceTableChange::RemovePieceTableChange(const AddressRange& removeRange, const PieceList& removedPieces)
0046     : mRemoveRange(removeRange)
0047     , mRemovedPieces(removedPieces)
0048 {}
0049 }
0050 
0051 #endif