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;
51 [[nodiscard]]
CompoundTagVariant const& at(std::string_view index)
const {
return operator[](index); }
53 LLNDAPI
static ll::Expected<CompoundTag>
56 LLNDAPI std::string toBinaryNbt(
bool isLittleEndian =
true)
const;
57 LLNDAPI
static ll::Expected<CompoundTag>
58 fromBinaryNbt(std::string_view dataView,
bool isLittleEndian =
true)
noexcept;
60 LLNDAPI std::string toNetworkNbt()
const;
61 LLNDAPI
static ll::Expected<CompoundTag> fromNetworkNbt(std::string
const& data)
noexcept;
63 [[nodiscard]]
size_t size()
const noexcept {
return mTags.size(); }
64 [[nodiscard]]
bool empty()
const noexcept {
return mTags.empty(); }
66 [[nodiscard]]
auto begin()
noexcept;
67 [[nodiscard]]
auto begin()
const noexcept;
68 [[nodiscard]]
auto end()
noexcept;
69 [[nodiscard]]
auto end()
const noexcept;
70 [[nodiscard]]
auto rbegin()
noexcept;
71 [[nodiscard]]
auto rbegin()
const noexcept;
72 [[nodiscard]]
auto rend()
noexcept;
73 [[nodiscard]]
auto rend()
const noexcept;
74 [[nodiscard]]
auto cbegin()
const noexcept;
75 [[nodiscard]]
auto cend()
const noexcept;
76 [[nodiscard]]
auto crbegin()
const noexcept;
77 [[nodiscard]]
auto crend()
const noexcept;
79 bool erase(std::string_view name);
80 void rename(std::string_view name, std::string_view newName);
85 virtual ~CompoundTag() =
default;
89 virtual ::Bedrock::Result<void> load(
::IDataInput& dis) ;
91 virtual ::Tag::Type getId()
const ;
93 virtual ::std::string toString()
const ;
95 virtual void print(::std::string
const& prefix_,
::PrintStream& out)
const ;
97 virtual ::std::unique_ptr<::Tag> copy()
const ;
99 virtual uint64 hash()
const ;
101 virtual bool equals(::Tag
const& obj)
const ;
108 MCAPI
void append(::CompoundTag
const& tag);
110 MCAPI ::std::unique_ptr<::CompoundTag> clone()
const;
112 MCAPI
bool contains(::std::string_view name)
const;
114 MCAPI
bool contains(::std::string_view name, ::Tag::Type type)
const;
122 MCAPI
void* $ctor(::CompoundTag&& rhs);
138 MCFOLD ::Tag::Type $getId()
const;
140 MCAPI ::std::string $toString()
const;
142 MCAPI
void $print(::std::string
const& prefix_,
::PrintStream& out)
const;
144 MCAPI ::std::unique_ptr<::Tag> $copy()
const;
146 MCAPI uint64 $hash()
const;
148 MCAPI
bool $equals(::Tag
const& obj)
const;