15 using TagMap = std::map<std::string, CompoundTagVariant, std::less<void>>;
19 using iterator = TagMap::iterator;
20 using const_iterator = TagMap::const_iterator;
21 using reverse_iterator = TagMap::reverse_iterator;
22 using const_reverse_iterator = TagMap::const_reverse_iterator;
26 CompoundTag(TagMap tags) : mTags(std::move(tags)) {}
28 CompoundTag(std::initializer_list<TagMap::value_type> tagPairs) : mTags(tagPairs) {}
38 [[nodiscard]]
CompoundTagVariant& at(std::string_view index) {
return operator[](index); }
39 [[nodiscard]]
CompoundTagVariant const& at(std::string_view index)
const {
return operator[](index); }
41 LLNDAPI
static ll::Expected<CompoundTag>
44 LLNDAPI std::string toBinaryNbt(
bool isLittleEndian =
true)
const;
45 LLNDAPI
static ll::Expected<CompoundTag>
46 fromBinaryNbt(std::string_view dataView,
bool isLittleEndian =
true)
noexcept;
48 LLNDAPI std::string toNetworkNbt()
const;
49 LLNDAPI
static ll::Expected<CompoundTag> fromNetworkNbt(std::string
const& data)
noexcept;
51 [[nodiscard]]
size_t size()
const noexcept {
return mTags.size(); }
52 [[nodiscard]]
bool empty()
const noexcept {
return mTags.empty(); }
54 [[nodiscard]]
auto begin()
noexcept;
55 [[nodiscard]]
auto begin()
const noexcept;
56 [[nodiscard]]
auto end()
noexcept;
57 [[nodiscard]]
auto end()
const noexcept;
58 [[nodiscard]]
auto rbegin()
noexcept;
59 [[nodiscard]]
auto rbegin()
const noexcept;
60 [[nodiscard]]
auto rend()
noexcept;
61 [[nodiscard]]
auto rend()
const noexcept;
62 [[nodiscard]]
auto cbegin()
const noexcept;
63 [[nodiscard]]
auto cend()
const noexcept;
64 [[nodiscard]]
auto crbegin()
const noexcept;
65 [[nodiscard]]
auto crend()
const noexcept;
67 bool erase(std::string_view name);
68 void rename(std::string_view name, std::string_view newName);
80 virtual ::Bedrock::Result<void> load(
::IDataInput& dis) ;
83 virtual ::Tag::Type getId()
const ;
86 virtual ::std::string toString()
const ;
89 virtual void print(::std::string
const& prefix,
::PrintStream& out)
const ;
92 virtual ::std::unique_ptr<::Tag> copy()
const ;
95 virtual uint64 hash()
const ;
98 virtual bool equals(
::Tag const& obj)
const ;
107 MCAPI ::std::unique_ptr<::CompoundTag> clone()
const;
109 MCAPI
bool contains(::std::string_view name)
const;
111 MCAPI
bool contains(::std::string_view name, ::Tag::Type type)
const;
135 MCAPI ::Tag::Type $getId()
const;
137 MCAPI ::std::string $toString()
const;
139 MCAPI
void $print(::std::string
const& prefix,
::PrintStream& out)
const;
141 MCAPI ::std::unique_ptr<::Tag> $copy()
const;
143 MCAPI uint64 $hash()
const;
145 MCAPI
bool $equals(
::Tag const& obj)
const;
151 MCAPI
static void** $vftable();