#include "Accountant.h" #include "Tag.h" #include "CompoundTag.h" #include using namespace nbt; using namespace libac; namespace nbt { int NBTAccountant::_prettyIndex = 0; void NBTAccountant::printRead(const Tag &tag) { tag.prettyPrint(_prettyIndex, false); } void NBTAccountant::visitTag() { _prettyIndex++; } void NBTAccountant::leaveTag(const Tag &tag) { // Assuming Tag has virtual methods to check its type or a `getType` method if (dynamic_cast(&tag) || dynamic_cast(&tag)) { if (const CompoundTag *ct = dynamic_cast(&tag)) { ct->endPrettyPrint(_prettyIndex); } else if (const ListTag *lt = dynamic_cast(&tag)) { lt->endPrettyPrint(_prettyIndex); } } _prettyIndex--; } }