23class CompoundTag :
public ::Tag {
25 using TagMap = std::map<std::string, CompoundTagVariant, std::less<void>>;
29 using iterator = TagMap::iterator;
30 using const_iterator = TagMap::const_iterator;
31 using reverse_iterator = TagMap::reverse_iterator;
32 using const_reverse_iterator = TagMap::const_reverse_iterator;
34 CompoundTag() =
default;
36 CompoundTag(TagMap tags) : mTags(std::move(tags)) {}
38 CompoundTag(std::initializer_list<TagMap::value_type> tagPairs) : mTags(tagPairs) {}
40 CompoundTag(CompoundTag
const&) =
default;
41 CompoundTag& operator=(CompoundTag
const&) =
default;
42 CompoundTag(CompoundTag&&) =
default;
43 CompoundTag& operator=(CompoundTag&&) =
default;
48 [[nodiscard]]
CompoundTagVariant& at(std::string_view index) {
return operator[](index); }
49 [[nodiscard]]
CompoundTagVariant const& at(std::string_view index)
const {
return operator[](index); }
51 LLNDAPI
static ll::Expected<CompoundTag>
54 LLNDAPI std::string toBinaryNbt(
bool isLittleEndian =
true)
const;
55 LLNDAPI
static ll::Expected<CompoundTag>
56 fromBinaryNbt(std::string_view dataView,
bool isLittleEndian =
true)
noexcept;
58 LLNDAPI std::string toNetworkNbt()
const;
59 LLNDAPI
static ll::Expected<CompoundTag> fromNetworkNbt(std::string
const& data)
noexcept;
61 [[nodiscard]]
size_t size()
const noexcept {
return mTags.size(); }
62 [[nodiscard]]
bool empty()
const noexcept {
return mTags.empty(); }
64 [[nodiscard]]
auto begin()
noexcept;
65 [[nodiscard]]
auto begin()
const noexcept;
66 [[nodiscard]]
auto end()
noexcept;
67 [[nodiscard]]
auto end()
const noexcept;
68 [[nodiscard]]
auto rbegin()
noexcept;
69 [[nodiscard]]
auto rbegin()
const noexcept;
70 [[nodiscard]]
auto rend()
noexcept;
71 [[nodiscard]]
auto rend()
const noexcept;
72 [[nodiscard]]
auto cbegin()
const noexcept;
73 [[nodiscard]]
auto cend()
const noexcept;
74 [[nodiscard]]
auto crbegin()
const noexcept;
75 [[nodiscard]]
auto crend()
const noexcept;
77 bool erase(std::string_view name);
78 void rename(std::string_view name, std::string_view newName);
83 virtual ~CompoundTag() =
default;
87 virtual ::Bedrock::Result<void> load(
::IDataInput& dis) ;
89 virtual ::Tag::Type getId()
const ;
91 virtual ::std::string toString()
const ;
93 virtual void print(::std::string
const& prefix,
::PrintStream& out)
const ;
95 virtual ::std::unique_ptr<::Tag> copy()
const ;
97 virtual uint64 hash()
const ;
99 virtual bool equals(::Tag
const& obj)
const ;
106 MCAPI
void append(::CompoundTag
const& tag);
108 MCAPI ::std::unique_ptr<::CompoundTag> clone()
const;
110 MCAPI
bool contains(::std::string_view name)
const;
112 MCAPI
bool contains(::std::string_view name, ::Tag::Type type)
const;
120 MCAPI
void* $ctor(::CompoundTag&& rhs);
136 MCFOLD ::Tag::Type $getId()
const;
138 MCAPI ::std::string $toString()
const;
140 MCAPI
void $print(::std::string
const& prefix,
::PrintStream& out)
const;
142 MCAPI ::std::unique_ptr<::Tag> $copy()
const;
144 MCAPI uint64 $hash()
const;
146 MCAPI
bool $equals(::Tag
const& obj)
const;