21class ListTag :
public ::Tag,
public std::vector<UniqueTagPtr> {
23 using List = std::vector<UniqueTagPtr>;
24 Tag::Type mType{Tag::End};
26 using Tag::operator==;
29 [[nodiscard]]
constexpr ListTag() =
default;
31 [[nodiscard]]
constexpr ListTag(List tags) : List(std::move(tags)) {
32 if (!empty()) mType = front().getId();
34 [[nodiscard]]
constexpr ListTag(std::initializer_list<CompoundTagVariant> tags);
35 [[nodiscard]]
constexpr ListTag(std::vector<CompoundTagVariant> tags);
42 virtual ::Bedrock::Result<void> load(
::IDataInput& dis) ;
44 virtual ::Tag::Type getId()
const ;
46 virtual ::std::string toString()
const ;
48 virtual void print(::std::string
const& prefix_,
::PrintStream& out)
const ;
50 virtual ::std::unique_ptr<::Tag> copy()
const ;
52 virtual uint64 hash()
const ;
54 virtual bool equals(::Tag
const& rhs)
const ;
56 virtual void deleteChildren() ;
62 MCAPI
void add(::std::unique_ptr<::Tag> tag);
64 MCAPI ::std::unique_ptr<::ListTag> copyList()
const;
70 MCAPI ::Tag* get(
int index)
const;
72 MCAPI uchar getByte(
int index)
const;
74 MCFOLD ::CompoundTag
const* getCompound(uint64 index)
const;
76 MCFOLD ::CompoundTag* getCompound(uint64 index);
78 MCAPI
double getDouble(
int index)
const;
80 MCAPI
float getFloat(
int index)
const;
82 MCAPI
int getInt(
int index)
const;
84 MCAPI int64 getInt64(
int index)
const;
86 MCAPI ::std::string
const& getString(
int index)
const;
88 MCFOLD ::Tag::Type getType()
const;
90 MCAPI
int size()
const;
106 MCFOLD ::Tag::Type $getId()
const;
108 MCAPI ::std::string $toString()
const;
110 MCAPI
void $print(::std::string
const& prefix_,
::PrintStream& out)
const;
112 MCAPI ::std::unique_ptr<::Tag> $copy()
const;
114 MCAPI uint64 $hash()
const;
116 MCAPI
bool $equals(::Tag
const& rhs)
const;
118 MCFOLD
void $deleteChildren();