14 using List = std::vector<UniqueTagPtr>;
15 Tag::Type mType{Tag::End};
17 using Tag::operator==;
20 [[nodiscard]]
constexpr ListTag() =
default;
22 [[nodiscard]]
constexpr ListTag(List tags) : List(std::move(tags)) {
23 if (!empty()) mType = front().getId();
25 [[nodiscard]]
constexpr ListTag(std::initializer_list<CompoundTagVariant> tags);
26 [[nodiscard]]
constexpr ListTag(std::vector<CompoundTagVariant> tags);
35 virtual ::Bedrock::Result<void> load(
::IDataInput& dis) ;
38 virtual ::Tag::Type getId()
const ;
41 virtual ::std::string toString()
const ;
44 virtual void print(::std::string
const& prefix,
::PrintStream& out)
const ;
47 virtual ::std::unique_ptr<::Tag> copy()
const ;
50 virtual uint64 hash()
const ;
53 virtual bool equals(
::Tag const& rhs)
const ;
56 virtual void deleteChildren() ;
65 MCAPI
void add(::std::unique_ptr<::Tag> tag);
67 MCAPI ::std::unique_ptr<::ListTag> copyList()
const;
69 MCAPI
void forEachCompoundTag(::std::function<
void(
::CompoundTag const&)> func)
const;
71 MCAPI ::Tag* get(
int index)
const;
73 MCAPI ::CompoundTag* getCompound(uint64 index);
75 MCAPI
float getFloat(
int index)
const;
77 MCFOLD
int size()
const;
93 MCFOLD ::Tag::Type $getId()
const;
95 MCAPI ::std::string $toString()
const;
97 MCAPI
void $print(::std::string
const& prefix,
::PrintStream& out)
const;
99 MCAPI ::std::unique_ptr<::Tag> $copy()
const;
101 MCAPI uint64 $hash()
const;
103 MCAPI
bool $equals(
::Tag const& rhs)
const;
105 MCAPI
void $deleteChildren();
111 MCAPI
static void** $vftable();