You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

71 lines
1.9 KiB
C++

#ifndef NBTMODIFIER_NBT_PAYLOAD_IPAYLOAD_H
#define NBTMODIFIER_NBT_PAYLOAD_IPAYLOAD_H
#define NBTMODIFIER_NBT_PAYLOAD_IPAYLOAD_H
#include <QtGlobal>
class QDataStream;
namespace NBT {
/**
* Namespace for all NBT payloads
*/
namespace Payload {
/**
* A NBT payload interface
*/
class IPayload {
public:
/**
* When a payload is destroyed
*/
virtual inline ~IPayload () {};
/**
* The NBT ID identifying the payload
*
* @return
*/
virtual quint8 const ID () const = 0;
/**
* Read a payload from a data stream
*
* @param stream The data stream
*/
virtual void readFromData (QDataStream &stream) = 0;
/**
* Write a payload to a data stream
*
* @param stream The data stream
*/
virtual void writeToData (QDataStream &stream) const = 0;
/**
* Convenient operator to read a payload from a data stream
*
* @param stream The data stream
* @param payload The payload
*
* @return The data stream (allow call chaining)
*
* @see readFromData
*/
friend QDataStream &operator >> (QDataStream &stream, IPayload &payload);
/**
* Convenient operator to write a payload to a data stream
*
* @param stream The data stream
* @param payload The payload
*
* @return The data stream (allow call chaining)
*
* @see writeToData
*/
friend QDataStream &operator << (QDataStream &stream, IPayload const &payload);
};
}
}
#endif //NBTMODIFIER_NBT_PAYLOAD_IPAYLOAD_H