summaryrefslogtreecommitdiffstats
path: root/src/NBT/Tag.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/NBT/Tag.cpp')
-rw-r--r--src/NBT/Tag.cpp61
1 files changed, 59 insertions, 2 deletions
diff --git a/src/NBT/Tag.cpp b/src/NBT/Tag.cpp
index fddfc4e..a2d57e3 100644
--- a/src/NBT/Tag.cpp
+++ b/src/NBT/Tag.cpp
@@ -46,7 +46,7 @@
namespace MinedMap {
namespace NBT {
-std::shared_ptr<Tag> Tag::readTag(Type type, Buffer *buffer) {
+std::shared_ptr<const Tag> Tag::readTag(Type type, Buffer *buffer) {
switch (type) {
case Type::End:
return std::shared_ptr<EndTag>(new EndTag());
@@ -89,7 +89,7 @@ std::shared_ptr<Tag> Tag::readTag(Type type, Buffer *buffer) {
}
}
-std::pair<std::string, std::shared_ptr<Tag>> Tag::readNamedTag(Buffer *buffer) {
+std::pair<std::string, std::shared_ptr<const Tag>> Tag::readNamedTag(Buffer *buffer) {
Type type = static_cast<Type>(buffer->get());
if (type == Type::End)
return std::make_pair("", std::shared_ptr<EndTag>(new EndTag()));
@@ -101,5 +101,62 @@ std::pair<std::string, std::shared_ptr<Tag>> Tag::readNamedTag(Buffer *buffer) {
return std::make_pair(name, readTag(type, buffer));
}
+std::ostream& operator<<(std::ostream& os, Tag::Type type) {
+ switch (type) {
+ case Tag::Type::End:
+ os << "End";
+ break;
+
+ case Tag::Type::Byte:
+ os << "Byte";
+ break;
+
+ case Tag::Type::Short:
+ os << "Short";
+ break;
+
+ case Tag::Type::Int:
+ os << "Int";
+ break;
+
+ case Tag::Type::Long:
+ os << "Long";
+ break;
+
+ case Tag::Type::Float:
+ os << "Float";
+ break;
+
+ case Tag::Type::Double:
+ os << "Double";
+ break;
+
+ case Tag::Type::ByteArray:
+ os << "ByteArray";
+ break;
+
+ case Tag::Type::String:
+ os << "String";
+ break;
+
+ case Tag::Type::List:
+ os << "List";
+ break;
+
+ case Tag::Type::Compound:
+ os << "Compound";
+ break;
+
+ case Tag::Type::IntArray:
+ os << "IntArray";
+ break;
+
+ default:
+ os.setstate(std::ios_base::failbit);
+ }
+
+ return os;
+}
+
}
}