X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Fnodemetadata.h;h=c028caf88666447e9d30fd80e8ea356e4641a26f;hb=b2ab5fd1615ac5f907e43992d0905a56cddf798f;hp=4b4cb17c7084214d00df9199b65124c318fbf230;hpb=a98baef5e4fedca36c8c8755ad7c8233469f6a3f;p=minetest.git diff --git a/src/nodemetadata.h b/src/nodemetadata.h index 4b4cb17c7..c028caf88 100644 --- a/src/nodemetadata.h +++ b/src/nodemetadata.h @@ -17,8 +17,7 @@ with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#ifndef NODEMETADATA_HEADER -#define NODEMETADATA_HEADER +#pragma once #include #include "metadata.h" @@ -71,13 +70,21 @@ class NodeMetadata : public Metadata List of metadata of all the nodes of a block */ +typedef std::map NodeMetadataMap; + class NodeMetadataList { public: + NodeMetadataList(bool is_metadata_owner = true) : + m_is_metadata_owner(is_metadata_owner) + {} + ~NodeMetadataList(); - void serialize(std::ostream &os, u8 blockver, bool disk=true) const; - void deSerialize(std::istream &is, IItemDefManager *item_def_mgr); + void serialize(std::ostream &os, u8 blockver, bool disk = true, + bool absolute_pos = false) const; + void deSerialize(std::istream &is, IItemDefManager *item_def_mgr, + bool absolute_pos = false); // Add all keys in this list to the vector keys std::vector getAllKeys(); @@ -90,10 +97,21 @@ class NodeMetadataList // Deletes all void clear(); + size_t size() const { return m_data.size(); } + + NodeMetadataMap::const_iterator begin() + { + return m_data.begin(); + } + + NodeMetadataMap::const_iterator end() + { + return m_data.end(); + } + private: int countNonEmpty() const; - std::map m_data; + bool m_is_metadata_owner; + NodeMetadataMap m_data; }; - -#endif