diff options
author | Matthias Schiffer <mschiffer@universe-factory.net> | 2015-02-01 04:14:42 +0100 |
---|---|---|
committer | Matthias Schiffer <mschiffer@universe-factory.net> | 2015-02-01 04:14:42 +0100 |
commit | 8a8a41a800dfe9bdcab934d6b53d9c6defd4a457 (patch) | |
tree | f9d40b96ee3413cbe7a402a4b4abad607b2a1c7c /src/NBT/ByteArrayTag.hpp | |
parent | fc1fc8fbbc9dd9534f40de348210ea66b6defe42 (diff) | |
download | MinedMap-8a8a41a800dfe9bdcab934d6b53d9c6defd4a457.tar MinedMap-8a8a41a800dfe9bdcab934d6b53d9c6defd4a457.zip |
Parse chunk data on demand
Diffstat (limited to 'src/NBT/ByteArrayTag.hpp')
-rw-r--r-- | src/NBT/ByteArrayTag.hpp | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/src/NBT/ByteArrayTag.hpp b/src/NBT/ByteArrayTag.hpp index ee0d7d1..2081759 100644 --- a/src/NBT/ByteArrayTag.hpp +++ b/src/NBT/ByteArrayTag.hpp @@ -38,22 +38,26 @@ class ByteArrayTag : public Tag { private: friend class Tag; - std::vector<uint8_t> value; + uint32_t len; + const uint8_t *value; ByteArrayTag(Buffer *buffer) { - uint32_t len = uint32_t(buffer->get()) << 24; - len |= uint32_t(buffer->get()) << 16; - len |= uint32_t(buffer->get()) << 8; - len |= uint32_t(buffer->get()); - - value.resize(len); - buffer->getData(value.data(), len); + len = buffer->get32(); + value = buffer->get(len); } public: virtual Type getType() const { return Type::ByteArray; } + + uint32_t getLength() const { + return len; + } + + const uint8_t & operator[](size_t i) const { + return value[i]; + } }; } |