Move PP() and PP2() macros to basic_macros.h
[oweals/minetest.git] / src / mapblock.cpp
index 1f84c4d7b7a51b2cac3a4ab74f8c73dd4b60ad7f..f8c3197bc61405a706c0948c807292d4d3339995 100644 (file)
@@ -35,8 +35,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #endif
 #include "util/string.h"
 #include "util/serialize.h"
-
-#define PP(x) "("<<(x).X<<","<<(x).Y<<","<<(x).Z<<")"
+#include "util/basic_macros.h"
 
 static const char *modified_reason_strings[] = {
        "initial",
@@ -501,7 +500,7 @@ static void getBlockNodeIdMapping(NameIdMapping *nimap, MapNode *nodes,
        }
        for(std::set<content_t>::const_iterator
                        i = unknown_contents.begin();
-                       i != unknown_contents.end(); i++){
+                       i != unknown_contents.end(); ++i){
                errorstream<<"getBlockNodeIdMapping(): IGNORING ERROR: "
                                <<"Name for node id "<<(*i)<<" not known"<<std::endl;
        }
@@ -540,14 +539,14 @@ static void correctBlockNodeIds(const NameIdMapping *nimap, MapNode *nodes,
        }
        for(std::set<content_t>::const_iterator
                        i = unnamed_contents.begin();
-                       i != unnamed_contents.end(); i++){
+                       i != unnamed_contents.end(); ++i){
                errorstream<<"correctBlockNodeIds(): IGNORING ERROR: "
                                <<"Block contains id "<<(*i)
                                <<" with no name mapping"<<std::endl;
        }
        for(std::set<std::string>::const_iterator
                        i = unallocatable_contents.begin();
-                       i != unallocatable_contents.end(); i++){
+                       i != unallocatable_contents.end(); ++i){
                errorstream<<"correctBlockNodeIds(): IGNORING ERROR: "
                                <<"Could not allocate global id for node name \""
                                <<(*i)<<"\""<<std::endl;
@@ -564,7 +563,7 @@ void MapBlock::serialize(std::ostream &os, u8 version, bool disk)
                throw SerializationError("ERROR: Not writing dummy block.");
        }
 
-       FATAL_ERROR_IF(version < SER_FMT_CLIENT_VER_LOWEST, "Serialize version error");
+       FATAL_ERROR_IF(version < SER_FMT_VER_LOWEST_WRITE, "Serialisation version error");
 
        // First byte
        u8 flags = 0;
@@ -696,20 +695,18 @@ void MapBlock::deSerialize(std::istream &is, u8 version, bool disk)
        TRACESTREAM(<<"MapBlock::deSerialize "<<PP(getPos())
                        <<": Node metadata"<<std::endl);
        // Ignore errors
-       try{
+       try {
                std::ostringstream oss(std::ios_base::binary);
                decompressZlib(is, oss);
                std::istringstream iss(oss.str(), std::ios_base::binary);
-               if(version >= 23)
-                       m_node_metadata.deSerialize(iss, m_gamedef);
+               if (version >= 23)
+                       m_node_metadata.deSerialize(iss, m_gamedef->idef());
                else
                        content_nodemeta_deserialize_legacy(iss,
-                                       &m_node_metadata, &m_node_timers,
-                                       m_gamedef);
-       }
-       catch(SerializationError &e)
-       {
-               errorstream<<"WARNING: MapBlock::deSerialize(): Ignoring an error"
+                               &m_node_metadata, &m_node_timers,
+                               m_gamedef->idef());
+       } catch(SerializationError &e) {
+               warningstream<<"MapBlock::deSerialize(): Ignoring an error"
                                <<" while deserializing node metadata at ("
                                <<PP(getPos())<<": "<<e.what()<<std::endl;
        }
@@ -772,7 +769,7 @@ void MapBlock::deSerializeNetworkSpecific(std::istream &is)
        }
        catch(SerializationError &e)
        {
-               errorstream<<"WARNING: MapBlock::deSerializeNetworkSpecific(): Ignoring an error"
+               warningstream<<"MapBlock::deSerializeNetworkSpecific(): Ignoring an error"
                                <<": "<<e.what()<<std::endl;
        }
 }
@@ -794,23 +791,20 @@ void MapBlock::deSerialize_pre22(std::istream &is, u8 version, bool disk)
        SharedBuffer<u8> databuf_nodelist(nodecount * ser_length);
 
        // These have no compression
-       if(version <= 3 || version == 5 || version == 6)
-       {
+       if (version <= 3 || version == 5 || version == 6) {
                char tmp;
                is.read(&tmp, 1);
-               if(is.gcount() != 1)
-                       throw SerializationError
-                                       ("MapBlock::deSerialize: no enough input data");
+               if (is.gcount() != 1)
+                       throw SerializationError(std::string(FUNCTION_NAME)
+                               + ": not enough input data");
                is_underground = tmp;
-               is.read((char*)*databuf_nodelist, nodecount * ser_length);
-               if((u32)is.gcount() != nodecount * ser_length)
-                       throw SerializationError
-                                       ("MapBlock::deSerialize: no enough input data");
-       }
-       else if(version <= 10)
-       {
+               is.read((char *)*databuf_nodelist, nodecount * ser_length);
+               if ((u32)is.gcount() != nodecount * ser_length)
+                       throw SerializationError(std::string(FUNCTION_NAME)
+                               + ": not enough input data");
+       } else if (version <= 10) {
                u8 t8;
-               is.read((char*)&t8, 1);
+               is.read((char *)&t8, 1);
                is_underground = t8;
 
                {
@@ -818,11 +812,10 @@ void MapBlock::deSerialize_pre22(std::istream &is, u8 version, bool disk)
                        std::ostringstream os(std::ios_base::binary);
                        decompress(is, os, version);
                        std::string s = os.str();
-                       if(s.size() != nodecount)
-                               throw SerializationError
-                                               ("MapBlock::deSerialize: invalid format");
-                       for(u32 i=0; i<s.size(); i++)
-                       {
+                       if (s.size() != nodecount)
+                               throw SerializationError(std::string(FUNCTION_NAME)
+                                       + ": not enough input data");
+                       for (u32 i = 0; i < s.size(); i++) {
                                databuf_nodelist[i*ser_length] = s[i];
                        }
                }
@@ -831,33 +824,27 @@ void MapBlock::deSerialize_pre22(std::istream &is, u8 version, bool disk)
                        std::ostringstream os(std::ios_base::binary);
                        decompress(is, os, version);
                        std::string s = os.str();
-                       if(s.size() != nodecount)
-                               throw SerializationError
-                                               ("MapBlock::deSerialize: invalid format");
-                       for(u32 i=0; i<s.size(); i++)
-                       {
+                       if (s.size() != nodecount)
+                               throw SerializationError(std::string(FUNCTION_NAME)
+                                       + ": not enough input data");
+                       for (u32 i = 0; i < s.size(); i++) {
                                databuf_nodelist[i*ser_length + 1] = s[i];
                        }
                }
 
-               if(version >= 10)
-               {
+               if (version >= 10) {
                        // Uncompress and set param2 data
                        std::ostringstream os(std::ios_base::binary);
                        decompress(is, os, version);
                        std::string s = os.str();
-                       if(s.size() != nodecount)
-                               throw SerializationError
-                                               ("MapBlock::deSerialize: invalid format");
-                       for(u32 i=0; i<s.size(); i++)
-                       {
+                       if (s.size() != nodecount)
+                               throw SerializationError(std::string(FUNCTION_NAME)
+                                       + ": not enough input data");
+                       for (u32 i = 0; i < s.size(); i++) {
                                databuf_nodelist[i*ser_length + 2] = s[i];
                        }
                }
-       }
-       // All other versions (newest)
-       else
-       {
+       } else { // All other versions (10 to 21)
                u8 flags;
                is.read((char*)&flags, 1);
                is_underground = (flags & 0x01) ? true : false;
@@ -870,14 +857,12 @@ void MapBlock::deSerialize_pre22(std::istream &is, u8 version, bool disk)
                std::ostringstream os(std::ios_base::binary);
                decompress(is, os, version);
                std::string s = os.str();
-               if(s.size() != nodecount*3)
-                       throw SerializationError
-                                       ("MapBlock::deSerialize: decompress resulted in size"
-                                       " other than nodecount*3");
+               if (s.size() != nodecount * 3)
+                       throw SerializationError(std::string(FUNCTION_NAME)
+                               + ": decompress resulted in size other than nodecount*3");
 
                // deserialize nodes from buffer
-               for(u32 i=0; i<nodecount; i++)
-               {
+               for (u32 i = 0; i < nodecount; i++) {
                        databuf_nodelist[i*ser_length] = s[i];
                        databuf_nodelist[i*ser_length + 1] = s[i+nodecount];
                        databuf_nodelist[i*ser_length + 2] = s[i+nodecount*2];
@@ -886,53 +871,45 @@ void MapBlock::deSerialize_pre22(std::istream &is, u8 version, bool disk)
                /*
                        NodeMetadata
                */
-               if(version >= 14)
-               {
+               if (version >= 14) {
                        // Ignore errors
-                       try{
-                               if(version <= 15)
-                               {
+                       try {
+                               if (version <= 15) {
                                        std::string data = deSerializeString(is);
                                        std::istringstream iss(data, std::ios_base::binary);
                                        content_nodemeta_deserialize_legacy(iss,
-                                                       &m_node_metadata, &m_node_timers,
-                                                       m_gamedef);
-                               }
-                               else
-                               {
+                                               &m_node_metadata, &m_node_timers,
+                                               m_gamedef->idef());
+                               } else {
                                        //std::string data = deSerializeLongString(is);
                                        std::ostringstream oss(std::ios_base::binary);
                                        decompressZlib(is, oss);
                                        std::istringstream iss(oss.str(), std::ios_base::binary);
                                        content_nodemeta_deserialize_legacy(iss,
-                                                       &m_node_metadata, &m_node_timers,
-                                                       m_gamedef);
+                                               &m_node_metadata, &m_node_timers,
+                                               m_gamedef->idef());
                                }
-                       }
-                       catch(SerializationError &e)
-                       {
-                               errorstream<<"WARNING: MapBlock::deSerialize(): Ignoring an error"
+                       } catch(SerializationError &e) {
+                               warningstream<<"MapBlock::deSerialize(): Ignoring an error"
                                                <<" while deserializing node metadata"<<std::endl;
                        }
                }
        }
 
        // Deserialize node data
-       for(u32 i=0; i<nodecount; i++)
-       {
-               data[i].deSerialize(&databuf_nodelist[i*ser_length], version);
+       for (u32 i = 0; i < nodecount; i++) {
+               data[i].deSerialize(&databuf_nodelist[i * ser_length], version);
        }
 
-       if(disk)
-       {
+       if (disk) {
                /*
                        Versions up from 9 have block objects. (DEPRECATED)
                */
-               if(version >= 9){
+               if (version >= 9) {
                        u16 count = readU16(is);
                        // Not supported and length not known if count is not 0
                        if(count != 0){
-                               errorstream<<"WARNING: MapBlock::deSerialize_pre22(): "
+                               warningstream<<"MapBlock::deSerialize_pre22(): "
                                                <<"Ignoring stuff coming at and after MBOs"<<std::endl;
                                return;
                        }
@@ -941,11 +918,11 @@ void MapBlock::deSerialize_pre22(std::istream &is, u8 version, bool disk)
                /*
                        Versions up from 15 have static objects.
                */
-               if(version >= 15)
+               if (version >= 15)
                        m_static_objects.deSerialize(is);
 
                // Timestamp
-               if(version >= 17){
+               if (version >= 17) {
                        setTimestamp(readU32(is));
                        m_disk_timestamp = m_timestamp;
                } else {
@@ -955,7 +932,7 @@ void MapBlock::deSerialize_pre22(std::istream &is, u8 version, bool disk)
                // Dynamically re-set ids based on node names
                NameIdMapping nimap;
                // If supported, read node definition id mapping
-               if(version >= 21){
+               if (version >= 21) {
                        nimap.deSerialize(is);
                // Else set the legacy mapping
                } else {