use unordered containers where possible (patch 4 on X)
authorLoic Blot <loic.blot@unix-experience.fr>
Thu, 6 Oct 2016 17:20:12 +0000 (19:20 +0200)
committersfan5 <sfan5@live.de>
Thu, 6 Oct 2016 20:37:26 +0000 (22:37 +0200)
Also remove some unused parameters/functions

13 files changed:
src/content_sao.cpp
src/content_sao.h
src/guiFormSpecMenu.h
src/map.h
src/mapblock_mesh.cpp
src/mapblock_mesh.h
src/network/serverpackethandler.cpp
src/script/cpp_api/s_async.cpp
src/script/cpp_api/s_async.h
src/server.cpp
src/server.h
src/util/numeric.cpp
src/util/numeric.h

index 1e7e788e9dd9da21671d6347fb4bdef3ed1e6ad1..895c2604433df6a0254a0acbccab6d729a3f55b8 100644 (file)
@@ -347,8 +347,10 @@ void LuaEntitySAO::step(float dtime, bool send_recommended)
 
        if(m_bone_position_sent == false){
                m_bone_position_sent = true;
-               for(std::map<std::string, core::vector2d<v3f> >::const_iterator ii = m_bone_position.begin(); ii != m_bone_position.end(); ++ii){
-                       std::string str = gob_cmd_update_bone_position((*ii).first, (*ii).second.X, (*ii).second.Y);
+               for (UNORDERED_MAP<std::string, core::vector2d<v3f> >::const_iterator
+                               ii = m_bone_position.begin(); ii != m_bone_position.end(); ++ii){
+                       std::string str = gob_cmd_update_bone_position((*ii).first,
+                                       (*ii).second.X, (*ii).second.Y);
                        // create message and add to list
                        ActiveObjectMessage aom(getId(), true, str);
                        m_messages_out.push(aom);
@@ -383,8 +385,10 @@ std::string LuaEntitySAO::getClientInitializationData(u16 protocol_version)
                os<<serializeLongString(gob_cmd_update_armor_groups(m_armor_groups)); // 2
                os<<serializeLongString(gob_cmd_update_animation(
                        m_animation_range, m_animation_speed, m_animation_blend, m_animation_loop)); // 3
-               for(std::map<std::string, core::vector2d<v3f> >::const_iterator ii = m_bone_position.begin(); ii != m_bone_position.end(); ++ii){
-                       os<<serializeLongString(gob_cmd_update_bone_position((*ii).first, (*ii).second.X, (*ii).second.Y)); // m_bone_position.size
+               for (UNORDERED_MAP<std::string, core::vector2d<v3f> >::const_iterator
+                               ii = m_bone_position.begin(); ii != m_bone_position.end(); ++ii) {
+                       os << serializeLongString(gob_cmd_update_bone_position((*ii).first,
+                                       (*ii).second.X, (*ii).second.Y)); // m_bone_position.size
                }
                os<<serializeLongString(gob_cmd_update_attachment(m_attachment_parent_id, m_attachment_bone, m_attachment_position, m_attachment_rotation)); // 4
        }
@@ -862,7 +866,8 @@ std::string PlayerSAO::getClientInitializationData(u16 protocol_version)
                os<<serializeLongString(gob_cmd_update_armor_groups(m_armor_groups)); // 2
                os<<serializeLongString(gob_cmd_update_animation(
                        m_animation_range, m_animation_speed, m_animation_blend, m_animation_loop)); // 3
-               for(std::map<std::string, core::vector2d<v3f> >::const_iterator ii = m_bone_position.begin(); ii != m_bone_position.end(); ++ii){
+               for (UNORDERED_MAP<std::string, core::vector2d<v3f> >::const_iterator
+                               ii = m_bone_position.begin(); ii != m_bone_position.end(); ++ii) {
                        os<<serializeLongString(gob_cmd_update_bone_position((*ii).first, (*ii).second.X, (*ii).second.Y)); // m_bone_position.size
                }
                os<<serializeLongString(gob_cmd_update_attachment(m_attachment_parent_id, m_attachment_bone, m_attachment_position, m_attachment_rotation)); // 4
@@ -1007,19 +1012,22 @@ void PlayerSAO::step(float dtime, bool send_recommended)
                m_messages_out.push(aom);
        }
 
-       if(m_bone_position_sent == false){
+       if (!m_bone_position_sent) {
                m_bone_position_sent = true;
-               for(std::map<std::string, core::vector2d<v3f> >::const_iterator ii = m_bone_position.begin(); ii != m_bone_position.end(); ++ii){
-                       std::string str = gob_cmd_update_bone_position((*ii).first, (*ii).second.X, (*ii).second.Y);
+               for (UNORDERED_MAP<std::string, core::vector2d<v3f> >::const_iterator
+                               ii = m_bone_position.begin(); ii != m_bone_position.end(); ++ii) {
+                       std::string str = gob_cmd_update_bone_position((*ii).first,
+                                       (*ii).second.X, (*ii).second.Y);
                        // create message and add to list
                        ActiveObjectMessage aom(getId(), true, str);
                        m_messages_out.push(aom);
                }
        }
 
-       if(m_attachment_sent == false){
+       if (!m_attachment_sent){
                m_attachment_sent = true;
-               std::string str = gob_cmd_update_attachment(m_attachment_parent_id, m_attachment_bone, m_attachment_position, m_attachment_rotation);
+               std::string str = gob_cmd_update_attachment(m_attachment_parent_id,
+                               m_attachment_bone, m_attachment_position, m_attachment_rotation);
                // create message and add to list
                ActiveObjectMessage aom(getId(), true, str);
                m_messages_out.push(aom);
index 44d40d332733d307266280166dac52f8110572bf..ccae90b77ee7a25391db44e10ac2ab0d0251da7b 100644 (file)
@@ -112,7 +112,7 @@ private:
        bool m_animation_loop;
        bool m_animation_sent;
 
-       std::map<std::string, core::vector2d<v3f> > m_bone_position;
+       UNORDERED_MAP<std::string, core::vector2d<v3f> > m_bone_position;
        bool m_bone_position_sent;
 
        int m_attachment_parent_id;
@@ -321,7 +321,8 @@ private:
        bool m_animation_loop;
        bool m_animation_sent;
 
-       std::map<std::string, core::vector2d<v3f> > m_bone_position; // Stores position and rotation for each bone name
+       // Stores position and rotation for each bone name
+       UNORDERED_MAP<std::string, core::vector2d<v3f> > m_bone_position;
        bool m_bone_position_sent;
 
        int m_attachment_parent_id;
index 21054b7253952e3d850b784854c8ca823afc28d0..153720975b3d528a745c6d42699b8e01f1cf22fe 100644 (file)
@@ -409,8 +409,6 @@ protected:
        std::vector<std::pair<FieldSpec, std::vector<std::string> > > m_dropdowns;
 
        ItemSpec *m_selected_item;
-       f32 m_timer1;
-       f32 m_timer2;
        u32 m_selected_amount;
        bool m_selected_dragging;
 
@@ -462,7 +460,7 @@ private:
                GUITable::TableOptions table_options;
                GUITable::TableColumns table_columns;
                // used to restore table selection/scroll/treeview state
-               std::map<std::string, GUITable::DynamicData> table_dyndata;
+               UNORDERED_MAP<std::string, GUITable::DynamicData> table_dyndata;
        } parserData;
 
        typedef struct {
index 13775fde1d1acb16f031da3aad5117f9a8aa9481..c73fa92bf5913b29c3426f68983f73fc690d7047 100644 (file)
--- a/src/map.h
+++ b/src/map.h
@@ -32,6 +32,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #include "voxel.h"
 #include "modifiedstate.h"
 #include "util/container.h"
+#include "util/cpp11_container.h"
 #include "nodetimer.h"
 #include "map_settings_manager.h"
 
index a11fb5887b388dda225d47afdc1cf3fdf1281676..00f83e7ab79c9a80fc48ab0e5a08fb4acc63d2fd 100644 (file)
@@ -1033,7 +1033,7 @@ MapBlockMesh::MapBlockMesh(MeshMakeData *data, v3s16 camera_offset):
        m_enable_shaders = data->m_use_shaders;
        m_use_tangent_vertices = data->m_use_tangent_vertices;
        m_enable_vbo = g_settings->getBool("enable_vbo");
-       
+
        if (g_settings->getBool("enable_minimap")) {
                m_minimap_mapblock = new MinimapMapblock;
                m_minimap_mapblock->getMinimapNodes(
@@ -1298,10 +1298,8 @@ bool MapBlockMesh::animate(bool faraway, float time, int crack, u32 daynight_rat
        // Cracks
        if(crack != m_last_crack)
        {
-               for(std::map<u32, std::string>::iterator
-                               i = m_crack_materials.begin();
-                               i != m_crack_materials.end(); ++i)
-               {
+               for (UNORDERED_MAP<u32, std::string>::iterator i = m_crack_materials.begin();
+                               i != m_crack_materials.end(); ++i) {
                        scene::IMeshBuffer *buf = m_mesh->getMeshBuffer(i->first);
                        std::string basename = i->second;
 
@@ -1315,9 +1313,9 @@ bool MapBlockMesh::animate(bool faraway, float time, int crack, u32 daynight_rat
 
                        // If the current material is also animated,
                        // update animation info
-                       std::map<u32, TileSpec>::iterator anim_iter =
-                               m_animation_tiles.find(i->first);
-                       if(anim_iter != m_animation_tiles.end()){
+                       UNORDERED_MAP<u32, TileSpec>::iterator anim_iter =
+                                       m_animation_tiles.find(i->first);
+                       if (anim_iter != m_animation_tiles.end()){
                                TileSpec &tile = anim_iter->second;
                                tile.texture = new_texture;
                                tile.texture_id = new_texture_id;
@@ -1330,10 +1328,8 @@ bool MapBlockMesh::animate(bool faraway, float time, int crack, u32 daynight_rat
        }
 
        // Texture animation
-       for(std::map<u32, TileSpec>::iterator
-                       i = m_animation_tiles.begin();
-                       i != m_animation_tiles.end(); ++i)
-       {
+       for (UNORDERED_MAP<u32, TileSpec>::iterator i = m_animation_tiles.begin();
+                       i != m_animation_tiles.end(); ++i) {
                const TileSpec &tile = i->second;
                // Figure out current frame
                int frameoffset = m_animation_frame_offsets[i->first];
@@ -1443,7 +1439,7 @@ void MeshCollector::append(const TileSpec &tile,
                                vertices[i].Color, vertices[i].TCoords);
                        p->vertices.push_back(vert);
                }
-       } 
+       }
 
        for (u32 i = 0; i < numIndices; i++) {
                u32 j = indices[i] + vertex_count;
@@ -1499,7 +1495,7 @@ void MeshCollector::append(const TileSpec &tile,
                                vertices[i].Normal, c, vertices[i].TCoords);
                        p->vertices.push_back(vert);
                }
-       } 
+       }
 
        for (u32 i = 0; i < numIndices; i++) {
                u32 j = indices[i] + vertex_count;
index f89fbe66945a76264a46f89f4ac5a4952833083c..8376468dafa9048be52581c46abe5735f190f3d5 100644 (file)
@@ -23,6 +23,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #include "irrlichttypes_extrabloated.h"
 #include "client/tile.h"
 #include "voxel.h"
+#include "util/cpp11_container.h"
 #include <map>
 
 class IGameDef;
@@ -121,7 +122,7 @@ public:
                if(m_animation_force_timer > 0)
                        m_animation_force_timer--;
        }
-       
+
        void updateCameraOffset(v3s16 camera_offset);
 
 private:
@@ -144,20 +145,20 @@ private:
        // Last crack value passed to animate()
        int m_last_crack;
        // Maps mesh buffer (i.e. material) indices to base texture names
-       std::map<u32, std::string> m_crack_materials;
+       UNORDERED_MAP<u32, std::string> m_crack_materials;
 
        // Animation info: texture animationi
        // Maps meshbuffers to TileSpecs
-       std::map<u32, TileSpec> m_animation_tiles;
-       std::map<u32, int> m_animation_frames; // last animation frame
-       std::map<u32, int> m_animation_frame_offsets;
-       
+       UNORDERED_MAP<u32, TileSpec> m_animation_tiles;
+       UNORDERED_MAP<u32, int> m_animation_frames; // last animation frame
+       UNORDERED_MAP<u32, int> m_animation_frame_offsets;
+
        // Animation info: day/night transitions
        // Last daynight_ratio value passed to animate()
        u32 m_last_daynight_ratio;
        // For each meshbuffer, maps vertex indices to (day,night) pairs
        std::map<u32, std::map<u32, std::pair<u8, u8> > > m_daynight_diffs;
-       
+
        // Camera offset info -> do we have to translate the mesh?
        v3s16 m_camera_offset;
 };
index a8bfd9068841414a6475c8aed1b5365d1796d92e..f9061cc4f1374525fccfcba7a381e11c133e438c 100644 (file)
@@ -1693,9 +1693,7 @@ void Server::handleCommand_RemovedSounds(NetworkPacket* pkt)
 
                *pkt >> id;
 
-               std::map<s32, ServerPlayingSound>::iterator i =
-                       m_playing_sounds.find(id);
-
+               UNORDERED_MAP<s32, ServerPlayingSound>::iterator i = m_playing_sounds.find(id);
                if (i == m_playing_sounds.end())
                        continue;
 
index 9bf3fcf493dd469f554162a7104e41567cbd6077..1fb84fab66e7c83fe19dd8f1a1e7b760ad9c7e21 100644 (file)
@@ -81,6 +81,7 @@ bool AsyncEngine::registerFunction(const char* name, lua_CFunction func)
        if (initDone) {
                return false;
        }
+
        functionList[name] = func;
        return true;
 }
@@ -203,7 +204,7 @@ void AsyncEngine::pushFinishedJobs(lua_State* L) {
 /******************************************************************************/
 void AsyncEngine::prepareEnvironment(lua_State* L, int top)
 {
-       for (std::map<std::string, lua_CFunction>::iterator it = functionList.begin();
+       for (UNORDERED_MAP<std::string, lua_CFunction>::iterator it = functionList.begin();
                        it != functionList.end(); it++) {
                lua_pushstring(L, it->first.c_str());
                lua_pushcfunction(L, it->second);
index 8d612d58cc8fb4fd941fd5fbd584fad97316d171..016381e5f2476c0d6484ffcaaada2fba0f6c759e 100644 (file)
@@ -132,7 +132,7 @@ private:
        bool initDone;
 
        // Internal store for registred functions
-       std::map<std::string, lua_CFunction> functionList;
+       UNORDERED_MAP<std::string, lua_CFunction> functionList;
 
        // Internal counter to create job IDs
        unsigned int jobIdCounter;
index 639e6462ad77edbffab18bf24ca124d549411fdf..2dd070b1a23c5787954e6376b7c6e399e7f46a71 100644 (file)
@@ -868,7 +868,7 @@ void Server::AsyncRunStep(bool initial_step)
                m_clients.unlock();
 
                // Clear buffered_messages
-               for(UNORDERED_MAP<u16, std::vector<ActiveObjectMessage>* >::iterator
+               for (UNORDERED_MAP<u16, std::vector<ActiveObjectMessage>* >::iterator
                                i = buffered_messages.begin();
                                i != buffered_messages.end(); ++i) {
                        delete i->second;
@@ -2016,16 +2016,15 @@ s32 Server::playSound(const SimpleSoundSpec &spec,
 void Server::stopSound(s32 handle)
 {
        // Get sound reference
-       std::map<s32, ServerPlayingSound>::iterator i =
-                       m_playing_sounds.find(handle);
-       if(i == m_playing_sounds.end())
+       UNORDERED_MAP<s32, ServerPlayingSound>::iterator i = m_playing_sounds.find(handle);
+       if (i == m_playing_sounds.end())
                return;
        ServerPlayingSound &psound = i->second;
 
        NetworkPacket pkt(TOCLIENT_STOP_SOUND, 4);
        pkt << handle;
 
-       for(std::set<u16>::iterator i = psound.clients.begin();
+       for (UNORDERED_SET<u16>::iterator i = psound.clients.begin();
                        i != psound.clients.end(); ++i) {
                // Send as reliable
                m_clients.send(*i, 0, &pkt, true);
@@ -2322,7 +2321,7 @@ void Server::sendMediaAnnouncement(u16 peer_id)
        NetworkPacket pkt(TOCLIENT_ANNOUNCE_MEDIA, 0, peer_id);
        pkt << (u16) m_media.size();
 
-       for (std::map<std::string, MediaInfo>::iterator i = m_media.begin();
+       for (UNORDERED_MAP<std::string, MediaInfo>::iterator i = m_media.begin();
                        i != m_media.end(); ++i) {
                pkt << i->first << i->second.sha1_digest;
        }
@@ -2367,7 +2366,7 @@ void Server::sendRequestedMedia(u16 peer_id,
                        i != tosend.end(); ++i) {
                const std::string &name = *i;
 
-               if(m_media.find(name) == m_media.end()) {
+               if (m_media.find(name) == m_media.end()) {
                        errorstream<<"Server::sendRequestedMedia(): Client asked for "
                                        <<"unknown file \""<<(name)<<"\""<<std::endl;
                        continue;
@@ -2628,13 +2627,11 @@ void Server::DeleteClient(u16 peer_id, ClientDeletionReason reason)
                /*
                        Clear references to playing sounds
                */
-               for(std::map<s32, ServerPlayingSound>::iterator
-                               i = m_playing_sounds.begin();
-                               i != m_playing_sounds.end();)
-               {
+               for (UNORDERED_MAP<s32, ServerPlayingSound>::iterator
+                                i = m_playing_sounds.begin(); i != m_playing_sounds.end();) {
                        ServerPlayingSound &psound = i->second;
                        psound.clients.erase(peer_id);
-                       if(psound.clients.empty())
+                       if (psound.clients.empty())
                                m_playing_sounds.erase(i++);
                        else
                                ++i;
index 3ad894b389bc9d40274cbf015d711d154246815b..34427a71ac30f968f71805995071cb1b55402668 100644 (file)
@@ -157,7 +157,7 @@ struct ServerSoundParams
 struct ServerPlayingSound
 {
        ServerSoundParams params;
-       std::set<u16> clients; // peer ids
+       UNORDERED_SET<u16> clients; // peer ids
 };
 
 class Server : public con::PeerHandler, public MapEventReceiver,
@@ -243,11 +243,9 @@ public:
        std::wstring getStatusString();
 
        // read shutdown state
-       inline bool getShutdownRequested()
-                       { return m_shutdown_requested; }
+       inline bool getShutdownRequested() const { return m_shutdown_requested; }
 
        // request server to shutdown
-       inline void requestShutdown() { m_shutdown_requested = true; }
        void requestShutdown(const std::string &msg, bool reconnect)
        {
                m_shutdown_requested = true;
@@ -323,8 +321,7 @@ public:
        const ModSpec* getModSpec(const std::string &modname) const;
        void getModNames(std::vector<std::string> &modlist);
        std::string getBuiltinLuaPath();
-       inline std::string getWorldPath() const
-                       { return m_path_world; }
+       inline std::string getWorldPath() const { return m_path_world; }
 
        inline bool isSingleplayer()
                        { return m_simple_singleplayer_mode; }
@@ -356,8 +353,7 @@ public:
        bool setSky(Player *player, const video::SColor &bgcolor,
                        const std::string &type, const std::vector<std::string> &params);
 
-       bool overrideDayNightRatio(Player *player, bool do_override,
-                       float brightness);
+       bool overrideDayNightRatio(Player *player, bool do_override, float brightness);
 
        /* con::PeerHandler implementation. */
        void peerAdded(con::Peer *peer);
@@ -654,12 +650,12 @@ private:
        u16 m_ignore_map_edit_events_peer_id;
 
        // media files known to server
-       std::map<std::string,MediaInfo> m_media;
+       UNORDERED_MAP<std::string, MediaInfo> m_media;
 
        /*
                Sounds
        */
-       std::map<s32, ServerPlayingSound> m_playing_sounds;
+       UNORDERED_MAP<s32, ServerPlayingSound> m_playing_sounds;
        s32 m_next_sound_id;
 
        /*
index 42ebd9022e5646eb7550f9865f7f145f669dd742..6a7bfcac91dad9bc52d78757cc014ec462e9418c 100644 (file)
@@ -27,7 +27,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #include <string.h>
 #include <iostream>
 
-std::map<u16, std::vector<v3s16> > FacePositionCache::m_cache;
+UNORDERED_MAP<u16, std::vector<v3s16> > FacePositionCache::m_cache;
 Mutex FacePositionCache::m_cache_mutex;
 // Calculate the borders of a "d-radius" cube
 // TODO: Make it work without mutex and data races, probably thread-local
index 615327864d22474bb829d202eb9b4281cdc596ef..4cdc254c32e0aa4b4c182810c6771af281452757 100644 (file)
@@ -26,8 +26,8 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #include "../irr_v3d.h"
 #include "../irr_aabb3d.h"
 #include "../threading/mutex.h"
+#include "cpp11_container.h"
 #include <list>
-#include <map>
 #include <vector>
 
 
@@ -41,26 +41,10 @@ public:
        static std::vector<v3s16> getFacePositions(u16 d);
 private:
        static void generateFacePosition(u16 d);
-       static std::map<u16, std::vector<v3s16> > m_cache;
+       static UNORDERED_MAP<u16, std::vector<v3s16> > m_cache;
        static Mutex m_cache_mutex;
 };
 
-class IndentationRaiser
-{
-public:
-       IndentationRaiser(u16 *indentation)
-       {
-               m_indentation = indentation;
-               (*m_indentation)++;
-       }
-       ~IndentationRaiser()
-       {
-               (*m_indentation)--;
-       }
-private:
-       u16 *m_indentation;
-};
-
 inline s16 getContainerPos(s16 p, s16 d)
 {
        return (p>=0 ? p : p-d+1) / d;
@@ -149,23 +133,6 @@ inline bool isInArea(v3s16 p, v3s16 d)
 #define rangelim(d, min, max) ((d) < (min) ? (min) : ((d)>(max)?(max):(d)))
 #define myfloor(x) ((x) > 0.0 ? (int)(x) : (int)(x) - 1)
 
-inline v3s16 arealim(v3s16 p, s16 d)
-{
-       if(p.X < 0)
-               p.X = 0;
-       if(p.Y < 0)
-               p.Y = 0;
-       if(p.Z < 0)
-               p.Z = 0;
-       if(p.X > d-1)
-               p.X = d-1;
-       if(p.Y > d-1)
-               p.Y = d-1;
-       if(p.Z > d-1)
-               p.Z = d-1;
-       return p;
-}
-
 // The naive swap performs better than the xor version
 #define SWAP(t, x, y) do { \
        t temp = x;            \