Warning, file /utilities/okteta/kasten/controllers/view/poddecoder/abstracttypecodec.hpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 /*
0002     This file is part of the Okteta Kasten module, made within the KDE community.
0003 
0004     SPDX-FileCopyrightText: 2009 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 KASTEN_ABSTRACTTYPECODEC_HPP
0010 #define KASTEN_ABSTRACTTYPECODEC_HPP
0011 
0012 // Qt
0013 #include <QString>
0014 #include <QVariant>
0015 
0016 class QByteArray;
0017 
0018 namespace Okteta {
0019 class PODData;
0020 
0021 class AbstractTypeCodec
0022 {
0023 protected:
0024     explicit AbstractTypeCodec(const QString& name);
0025 
0026 public:
0027     AbstractTypeCodec(const AbstractTypeCodec&) = delete;
0028 
0029     virtual ~AbstractTypeCodec();
0030 
0031     AbstractTypeCodec& operator=(const AbstractTypeCodec&) = delete;
0032 
0033 public: // API to be implemented
0034     virtual QVariant value(const PODData& data, int* byteCount) const = 0;
0035     virtual QByteArray valueToBytes(const QVariant& value) const = 0;
0036 
0037     virtual bool areEqual(const QVariant& value, QVariant& otherValue) const = 0;
0038 
0039 public:
0040     const QString& name() const;
0041 
0042 private:
0043     QString mName;
0044 };
0045 
0046 inline AbstractTypeCodec::AbstractTypeCodec(const QString& name) : mName(name) {}
0047 inline AbstractTypeCodec::~AbstractTypeCodec() = default;
0048 
0049 inline const QString& AbstractTypeCodec::name() const { return mName; }
0050 
0051 }
0052 
0053 #endif