Files
GabsPuNs-MinecraftConsoles/Minecraft.World/Tag.h
GabsPuNs 40d48948ff Use BYTE Win Typedef instead of byte typedef from Minecraft.World
"byte" wasnt working anymore for some reason
2026-04-13 17:54:28 -04:00

47 lines
1.3 KiB
C++

#pragma once
#include <ostream>
#include "InputOutputStream.h"
using namespace std;
class Tag
{
public:
static const BYTE TAG_End = 0;
static const BYTE TAG_Byte = 1;
static const BYTE TAG_Short = 2;
static const BYTE TAG_Int = 3;
static const BYTE TAG_Long = 4;
static const BYTE TAG_Float = 5;
static const BYTE TAG_Double = 6;
static const BYTE TAG_Byte_Array = 7;
static const BYTE TAG_String = 8;
static const BYTE TAG_List = 9;
static const BYTE TAG_Compound = 10;
static const BYTE TAG_Int_Array = 11;
static const int MAX_DEPTH = 512;
private:
wstring name;
protected:
Tag(const wstring &name);
public:
virtual void write(DataOutput *dos) = 0;
virtual void load(DataInput *dis, int tagDepth) = 0;
virtual wstring toString() = 0;
virtual BYTE getId() = 0;
// void print(ostream out);
// void print(char *prefix, wostream out);
wstring getName();
Tag *setName(const wstring& name);
static Tag *readNamedTag(DataInput *dis);
static Tag *readNamedTag(DataInput *dis, int tagDepth);
static void writeNamedTag(Tag *tag, DataOutput *dos);
static Tag *newTag(BYTE type, const wstring &name);
static const wchar_t *getTagName(BYTE type);
virtual ~Tag() {}
virtual bool equals(Tag *obj); // 4J Brought forward from 1.2
virtual Tag *copy() = 0; // 4J Brought foward from 1.2
};