Add tag's value getter + TagString

master
Julien Rosset 5 years ago
parent c57d9e6405
commit 502625a18c

@ -30,5 +30,5 @@ add_executable(
NBT/TagLong.cpp NBT/TagLong.h
NBT/TagFloat.cpp NBT/TagFloat.h
NBT/TagDouble.cpp NBT/TagDouble.h
NBT/TagByteArray.cpp NBT/TagByteArray.h)
NBT/TagByteArray.cpp NBT/TagByteArray.h NBT/TagString.cpp NBT/TagString.h)
target_link_libraries(NBTModifier Qt5::Widgets Qt5::Svg)

@ -7,6 +7,8 @@
#include "TagLong.h"
#include "TagFloat.h"
#include "TagDouble.h"
#include "TagByteArray.h"
#include "TagString.h"
#include <QtCore/QDataStream>
@ -46,6 +48,12 @@ AbstractTag *AbstractTag::extractEmptyTag(const QByteArray &data) {
case TagDouble::ID:
return new TagDouble();
case TagByteArray::ID:
return new TagByteArray();
case TagString::ID:
return new TagString();
}
return nullptr;

@ -4,6 +4,11 @@
TagByte::TagByte(const qint8 value) : AbstractNamedTag(ID), m_value(value) {}
const qint8 TagByte::value() const {
return m_value;
}
void TagByte::readPayloadFromData(QDataStream &data) {
data >> m_value;
}

@ -9,6 +9,8 @@ public:
TagByte(const qint8 value = 0);
const qint8 value() const;
protected:
virtual void readPayloadFromData(QDataStream &data) override;
virtual void writePayloadToData(QDataStream &data) const override;

@ -6,6 +6,10 @@
TagByteArray::TagByteArray(const QList<TagByte> value) : AbstractNamedTag(ID), m_value(value) {}
const QList<TagByte> &TagByteArray::value() const {
return m_value;
}
void TagByteArray::readPayloadFromData(QDataStream &data) {
TagInt size;
data >> size;

@ -12,6 +12,8 @@ public:
TagByteArray(const QList<TagByte> value = QList<TagByte>());
const QList<TagByte> &value() const;
protected:
virtual void readPayloadFromData(QDataStream &data) override;
virtual void writePayloadToData(QDataStream &data) const override;

@ -5,6 +5,10 @@
TagDouble::TagDouble(const double value) : AbstractNamedTag(ID), m_value(value) {}
const double TagDouble::value() const {
return m_value;
}
void TagDouble::readPayloadFromData(QDataStream &data) {
data >> m_value;
m_value = qFromBigEndian(m_value);

@ -9,6 +9,8 @@ public:
TagDouble(const double value = 0);
const double value() const;
protected:
virtual void readPayloadFromData(QDataStream &data) override;
virtual void writePayloadToData(QDataStream &data) const override;

@ -5,6 +5,10 @@
TagFloat::TagFloat(const float value) : AbstractNamedTag(ID), m_value(value) {}
const float TagFloat::value() const {
return m_value;
}
void TagFloat::readPayloadFromData(QDataStream &data) {
data >> m_value;
m_value = qFromBigEndian(m_value);

@ -10,6 +10,8 @@ public:
TagFloat(const float value = 0);
const float value() const;
protected:
virtual void readPayloadFromData(QDataStream &data) override;
virtual void writePayloadToData(QDataStream &data) const override;

@ -5,6 +5,10 @@
TagLong::TagLong(const qint64 value) : AbstractNamedTag(ID), m_value(value) {}
const qint64 TagLong::value() const {
return m_value;
}
void TagLong::readPayloadFromData(QDataStream &data) {
data >> m_value;
m_value = qFromBigEndian(m_value);

@ -9,6 +9,8 @@ public:
TagLong(const qint64 value = 0);
const qint64 value() const;
protected:
virtual void readPayloadFromData(QDataStream &data) override;
virtual void writePayloadToData(QDataStream &data) const override;

@ -5,6 +5,10 @@
TagShort::TagShort(const qint16 value) : AbstractNamedTag(ID), m_value(value) {}
const qint16 TagShort::value() const {
return m_value;
}
void TagShort::readPayloadFromData(QDataStream &data) {
data >> m_value;
m_value = qFromBigEndian(m_value);

@ -9,6 +9,8 @@ public:
TagShort(const qint16 value = 0);
const qint16 value() const;
protected:
virtual void readPayloadFromData(QDataStream &data) override;
virtual void writePayloadToData(QDataStream &data) const override;

@ -0,0 +1,35 @@
#include "TagString.h"
#include "TagShort.h"
#include <QtCore/QDataStream>
TagString::TagString(const QString &value) : AbstractNamedTag(ID), m_value(value) {}
const QString &TagString::value() const {
return m_value;
}
void TagString::readPayloadFromData(QDataStream &data) {
TagShort size;
data >> size;
QByteArray string(size.value(), '\0');
for (qint16 elem = 0; elem < size.value(); elem++) {
qint8 byte;
data >> byte;
string[elem] = byte;
}
m_value = QString::fromUtf8(string);
}
void TagString::writePayloadToData(QDataStream &data) const {
const QByteArray string(m_value.toUtf8());
const TagShort size(string.size());
data << size;
for(qint16 elem = 0; elem < size.value(); elem++) {
data << string.at(elem);
}
}

@ -0,0 +1,24 @@
#ifndef NBTMODIFIER_TAGSTRING_H
#define NBTMODIFIER_TAGSTRING_H
#include "AbstractNamedTag.h"
#include <QtCore/QString>
class TagString : public AbstractNamedTag {
public:
static constexpr quint8 ID = 8;
TagString(const QString &value = 0);
const QString &value() const;
protected:
virtual void readPayloadFromData(QDataStream &data) override;
virtual void writePayloadToData(QDataStream &data) const override;
private:
QString m_value;
};
#endif //NBTMODIFIER_TAGSTRING_H
Loading…
Cancel
Save