File indexing completed on 2024-04-21 05:52:59
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_CHANGESDATASTORAGE_HPP 0010 #define OKTETA_CHANGESDATASTORAGE_HPP 0011 0012 // Qt 0013 #include <QByteArray> 0014 0015 namespace Okteta { 0016 0017 class ChangesDataStorage 0018 { 0019 public: 0020 ChangesDataStorage(); 0021 ChangesDataStorage(const ChangesDataStorage&) = delete; 0022 0023 ~ChangesDataStorage() = default; 0024 0025 ChangesDataStorage& operator=(const ChangesDataStorage&) = delete; 0026 0027 public: // set/action 0028 void append(int from, char datum); 0029 void append(int from, const char* data, int dataLength); 0030 void appendFill(int from, char fillDatum, int fillLength); 0031 0032 void clear(); 0033 0034 public: // get 0035 QByteArray data(int offset, int length) const; 0036 char operator[](int offset) const; 0037 0038 private: 0039 QByteArray mData; 0040 }; 0041 0042 inline ChangesDataStorage::ChangesDataStorage() = default; 0043 0044 inline QByteArray ChangesDataStorage::data(int offset, int length) const 0045 { 0046 return mData.mid(offset, length); 0047 } 0048 0049 inline char ChangesDataStorage::operator[](int offset) const { return mData[offset]; } 0050 0051 inline void ChangesDataStorage::clear() { mData.clear(); } 0052 0053 inline void ChangesDataStorage::append(int from, char datum) 0054 { 0055 mData.resize(from); 0056 mData.append(datum); 0057 } 0058 0059 inline void ChangesDataStorage::append(int from, const char* data, int dataLength) 0060 { 0061 mData.resize(from + dataLength); 0062 memcpy(mData.data() + from, data, dataLength); 0063 } 0064 0065 inline void ChangesDataStorage::appendFill(int from, char fillDatum, int fillLength) 0066 { 0067 mData.resize(from + fillLength); 0068 memset(mData.data() + from, fillDatum, fillLength); 0069 } 0070 0071 } 0072 0073 #endif