the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
1#pragma once
2#include "Tag.h"
3#include "System.h"
4
5class ByteArrayTag : public Tag
6{
7public:
8 byteArray data;
9 bool m_ownData;
10
11 ByteArrayTag(const wstring &name) : Tag(name) { m_ownData = false; }
12 ByteArrayTag(const wstring &name, byteArray data, bool ownData = false) : Tag(name) {this->data = data; m_ownData = ownData;} // 4J - added ownData param
13 ~ByteArrayTag() { if(m_ownData) delete [] data.data; }
14
15 void write(DataOutput *dos)
16 {
17 dos->writeInt(data.length);
18 dos->write(data);
19 }
20
21 void load(DataInput *dis, int tagDepth)
22 {
23 int length = dis->readInt();
24
25 if ( data.data ) delete[] data.data;
26 data = byteArray(length);
27 dis->readFully(data);
28 }
29
30 byte getId() { return TAG_Byte_Array; }
31
32 wstring toString()
33 {
34 static wchar_t buf[32];
35 swprintf(buf, 32, L"[%d bytes]",data.length);
36 return wstring( buf );
37 }
38
39 bool equals(Tag *obj)
40 {
41 if (Tag::equals(obj))
42 {
43 ByteArrayTag *o = (ByteArrayTag *) obj;
44 return ((data.data == NULL && o->data.data == NULL) || (data.data != NULL && data.length == o->data.length && memcmp(data.data, o->data.data, data.length) == 0) );
45 }
46 return false;
47 }
48
49 Tag *copy()
50 {
51 byteArray cp = byteArray(data.length);
52 System::arraycopy(data, 0, &cp, 0, data.length);
53 return new ByteArrayTag(getName(), cp, true);
54 }
55};