Create all numeric tags

master
Julien Rosset 5 years ago
parent da944ebb91
commit a987bbe0b9

@ -25,5 +25,10 @@ add_executable(
NBT/AbstractNamedTag.h NBT/AbstractNamedTag.cpp
NBT/TagEnd.cpp NBT/TagEnd.h
NBT/TagByte.cpp NBT/TagByte.h
NBT/TagShort.cpp NBT/TagShort.h
NBT/TagInt.cpp NBT/TagInt.h
NBT/TagLong.cpp NBT/TagLong.h
NBT/TagFloat.cpp NBT/TagFloat.h
NBT/TagDouble.cpp NBT/TagDouble.h
)
target_link_libraries(NBTModifier Qt5::Widgets Qt5::Svg)

@ -2,6 +2,11 @@
#include "TagEnd.h"
#include "TagByte.h"
#include "TagShort.h"
#include "TagInt.h"
#include "TagLong.h"
#include "TagFloat.h"
#include "TagDouble.h"
#include <QtCore/QDataStream>
@ -19,9 +24,31 @@ AbstractTag *AbstractTag::fromData(QDataStream &data, bool *ok) {
switch (id) {
case TagEnd::ID:
tag = new TagEnd();
break;
case TagByte::ID:
tag = new TagByte();
break;
case TagShort::ID:
tag = new TagShort();
break;
case TagInt::ID:
tag = new TagInt();
break;
case TagLong::ID:
tag = new TagLong();
break;
case TagFloat::ID:
tag = new TagFloat();
break;
case TagDouble::ID:
tag = new TagDouble();
break;
}
if (tag == nullptr) {
return nullptr;

@ -0,0 +1,16 @@
#include "TagDouble.h"
#include <QtEndian>
#include <QtCore/QDataStream>
TagDouble::TagDouble(const double value) : AbstractNamedTag(ID), m_value(value) {}
bool const TagDouble::readPayloadFromData(QDataStream &data) {
data >> m_value;
m_value = qFromBigEndian(m_value);
return true;
}
bool const TagDouble::writePayloadToData(QDataStream &data) const {
data << qToBigEndian(m_value);
return true;
}

@ -0,0 +1,20 @@
#ifndef NBTMODIFIER_TAGDOUBLE_H
#define NBTMODIFIER_TAGDOUBLE_H
#include "AbstractNamedTag.h"
class TagDouble : public AbstractNamedTag {
public:
static constexpr quint8 ID = 6;
TagDouble(const double value = 0);
protected:
virtual bool const readPayloadFromData(QDataStream &data) override;
virtual bool const writePayloadToData(QDataStream &data) const override;
private:
double m_value;
};
#endif //NBTMODIFIER_TAGDOUBLE_H

@ -0,0 +1,16 @@
#include "TagFloat.h"
#include <QtEndian>
#include <QtCore/QDataStream>
TagFloat::TagFloat(const float value) : AbstractNamedTag(ID), m_value(value) {}
bool const TagFloat::readPayloadFromData(QDataStream &data) {
data >> m_value;
m_value = qFromBigEndian(m_value);
return true;
}
bool const TagFloat::writePayloadToData(QDataStream &data) const {
data << qToBigEndian(m_value);
return true;
}

@ -0,0 +1,21 @@
#ifndef NBTMODIFIER_TAGFLOAT_H
#define NBTMODIFIER_TAGFLOAT_H
#include <QtCore/qfloat16.h>
#include "AbstractNamedTag.h"
class TagFloat : public AbstractNamedTag {
public:
static constexpr quint8 ID = 5;
TagFloat(const float value = 0);
protected:
virtual bool const readPayloadFromData(QDataStream &data) override;
virtual bool const writePayloadToData(QDataStream &data) const override;
private:
float m_value;
};
#endif //NBTMODIFIER_TAGFLOAT_H

@ -0,0 +1,16 @@
#include "TagInt.h"
#include <QtEndian>
#include <QtCore/QDataStream>
TagInt::TagInt(const qint32 value) : AbstractNamedTag(ID), m_value(value) {}
bool const TagInt::readPayloadFromData(QDataStream &data) {
data >> m_value;
m_value = qFromBigEndian(m_value);
return true;
}
bool const TagInt::writePayloadToData(QDataStream &data) const {
data << qToBigEndian(m_value);
return true;
}

@ -0,0 +1,20 @@
#ifndef NBTMODIFIER_TAGINT_H
#define NBTMODIFIER_TAGINT_H
#include "AbstractNamedTag.h"
class TagInt : public AbstractNamedTag {
public:
static constexpr quint8 ID = 3;
TagInt(const qint32 value = 0);
protected:
virtual bool const readPayloadFromData(QDataStream &data) override;
virtual bool const writePayloadToData(QDataStream &data) const override;
private:
qint32 m_value;
};
#endif //NBTMODIFIER_TAGINT_H

@ -0,0 +1,16 @@
#include "TagLong.h"
#include <QtEndian>
#include <QtCore/QDataStream>
TagLong::TagLong(const qint64 value) : AbstractNamedTag(ID), m_value(value) {}
bool const TagLong::readPayloadFromData(QDataStream &data) {
data >> m_value;
m_value = qFromBigEndian(m_value);
return true;
}
bool const TagLong::writePayloadToData(QDataStream &data) const {
data << qToBigEndian(m_value);
return true;
}

@ -0,0 +1,20 @@
#ifndef NBTMODIFIER_TAGLONG_H
#define NBTMODIFIER_TAGLONG_H
#include "AbstractNamedTag.h"
class TagLong : public AbstractNamedTag {
public:
static constexpr quint8 ID = 4;
TagLong(const qint64 value = 0);
protected:
virtual bool const readPayloadFromData(QDataStream &data) override;
virtual bool const writePayloadToData(QDataStream &data) const override;
private:
qint64 m_value;
};
#endif //NBTMODIFIER_TAGLONG_H

@ -0,0 +1,16 @@
#include "TagShort.h"
#include <QtEndian>
#include <QtCore/QDataStream>
TagShort::TagShort(const qint16 value) : AbstractNamedTag(ID), m_value(value) {}
bool const TagShort::readPayloadFromData(QDataStream &data) {
data >> m_value;
m_value = qFromBigEndian(m_value);
return true;
}
bool const TagShort::writePayloadToData(QDataStream &data) const {
data << qToBigEndian(m_value);
return true;
}

@ -0,0 +1,20 @@
#ifndef NBTMODIFIER_TAGSHORT_H
#define NBTMODIFIER_TAGSHORT_H
#include "AbstractNamedTag.h"
class TagShort : public AbstractNamedTag {
public:
static constexpr quint8 ID = 2;
TagShort(const qint16 value = 0);
protected:
virtual bool const readPayloadFromData(QDataStream &data) override;
virtual bool const writePayloadToData(QDataStream &data) const override;
private:
qint16 m_value;
};
#endif //NBTMODIFIER_TAGSHORT_H
Loading…
Cancel
Save