File indexing completed on 2024-03-24 17:26:36
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_BYTEARRAYCHANGE_HPP 0010 #define OKTETA_BYTEARRAYCHANGE_HPP 0011 0012 // lib 0013 #include "oktetacore_export.hpp" 0014 #include "arraychangemetrics.hpp" 0015 // Qt 0016 #include <QByteArray> 0017 0018 namespace Okteta { 0019 0020 // TODO: do we need the invalid status? 0021 // TODO: what about grouped changes 0022 // TODO: use change names from original? Only if local are not available 0023 class OKTETACORE_EXPORT ByteArrayChange 0024 { 0025 friend QDataStream& operator<<(QDataStream& outStream, const ByteArrayChange& change); 0026 friend QDataStream& operator>>(QDataStream& inStream, ByteArrayChange& change); 0027 0028 public: 0029 ByteArrayChange(); 0030 explicit ByteArrayChange(const ArrayChangeMetrics& metrics, const QByteArray& data = QByteArray()); 0031 ByteArrayChange(const ByteArrayChange&) = default; 0032 0033 ~ByteArrayChange() = default; 0034 0035 ByteArrayChange& operator=(const ByteArrayChange&) = default; 0036 0037 public: 0038 const ArrayChangeMetrics& metrics() const; 0039 const QByteArray& data() const; 0040 0041 private: 0042 ArrayChangeMetrics mMetrics; 0043 QByteArray mData; 0044 // UserId mUserId; 0045 // mTime; 0046 }; 0047 0048 inline ByteArrayChange::ByteArrayChange() = default; 0049 0050 inline ByteArrayChange::ByteArrayChange(const ArrayChangeMetrics& metrics, const QByteArray& data) 0051 : mMetrics(metrics) 0052 , mData(data) 0053 {} 0054 0055 inline const ArrayChangeMetrics& ByteArrayChange::metrics() const { return mMetrics; } 0056 inline const QByteArray& ByteArrayChange::data() const { return mData; } 0057 0058 QDataStream& operator<<(QDataStream& outStream, const ByteArrayChange& change); 0059 QDataStream& operator>>(QDataStream& inStream, ByteArrayChange& change); 0060 0061 inline QDataStream& operator<<(QDataStream& outStream, const ByteArrayChange& change) 0062 { 0063 outStream << change.mMetrics << change.mData; 0064 return outStream; 0065 } 0066 0067 inline QDataStream& operator>>(QDataStream& inStream, ByteArrayChange& change) 0068 { 0069 inStream >> change.mMetrics >> change.mData; 0070 return inStream; 0071 } 0072 0073 } 0074 0075 Q_DECLARE_TYPEINFO(Okteta::ByteArrayChange, Q_MOVABLE_TYPE); 0076 0077 #endif