Use std::vector instead of std::list in StaticObjectList and MutexedMap::getValues()

This commit is contained in:
Loic Blot 2015-03-04 17:18:57 +01:00
parent 06f328207f
commit cd684497c2
5 changed files with 12 additions and 15 deletions

@ -1675,12 +1675,13 @@ void ServerEnvironment::activateObjects(MapBlock *block, u32 dtime_s)
// Ignore if no stored objects (to not set changed flag) // Ignore if no stored objects (to not set changed flag)
if(block->m_static_objects.m_stored.empty()) if(block->m_static_objects.m_stored.empty())
return; return;
verbosestream<<"ServerEnvironment::activateObjects(): " verbosestream<<"ServerEnvironment::activateObjects(): "
<<"activating objects of block "<<PP(block->getPos()) <<"activating objects of block "<<PP(block->getPos())
<<" ("<<block->m_static_objects.m_stored.size() <<" ("<<block->m_static_objects.m_stored.size()
<<" objects)"<<std::endl; <<" objects)"<<std::endl;
bool large_amount = (block->m_static_objects.m_stored.size() > g_settings->getU16("max_objects_per_block")); bool large_amount = (block->m_static_objects.m_stored.size() > g_settings->getU16("max_objects_per_block"));
if(large_amount){ if (large_amount) {
errorstream<<"suspiciously large amount of objects detected: " errorstream<<"suspiciously large amount of objects detected: "
<<block->m_static_objects.m_stored.size()<<" in " <<block->m_static_objects.m_stored.size()<<" in "
<<PP(block->getPos()) <<PP(block->getPos())
@ -1695,7 +1696,7 @@ void ServerEnvironment::activateObjects(MapBlock *block, u32 dtime_s)
// Activate stored objects // Activate stored objects
std::vector<StaticObject> new_stored; std::vector<StaticObject> new_stored;
for(std::list<StaticObject>::iterator for (std::vector<StaticObject>::iterator
i = block->m_static_objects.m_stored.begin(); i = block->m_static_objects.m_stored.begin();
i != block->m_static_objects.m_stored.end(); ++i) { i != block->m_static_objects.m_stored.end(); ++i) {
StaticObject &s_obj = *i; StaticObject &s_obj = *i;

@ -249,8 +249,8 @@ public:
virtual ~CItemDefManager() virtual ~CItemDefManager()
{ {
#ifndef SERVER #ifndef SERVER
const std::list<ClientCached*> &values = m_clientcached.getValues(); const std::vector<ClientCached*> &values = m_clientcached.getValues();
for(std::list<ClientCached*>::const_iterator for(std::vector<ClientCached*>::const_iterator
i = values.begin(); i != values.end(); ++i) i = values.begin(); i != values.end(); ++i)
{ {
ClientCached *cc = *i; ClientCached *cc = *i;

@ -47,10 +47,9 @@ void StaticObjectList::serialize(std::ostream &os)
// count // count
u16 count = m_stored.size() + m_active.size(); u16 count = m_stored.size() + m_active.size();
writeU16(os, count); writeU16(os, count);
for(std::list<StaticObject>::iterator for(std::vector<StaticObject>::iterator
i = m_stored.begin(); i = m_stored.begin();
i != m_stored.end(); ++i) i != m_stored.end(); ++i) {
{
StaticObject &s_obj = *i; StaticObject &s_obj = *i;
s_obj.serialize(os); s_obj.serialize(os);
} }
@ -68,8 +67,7 @@ void StaticObjectList::deSerialize(std::istream &is)
u8 version = readU8(is); u8 version = readU8(is);
// count // count
u16 count = readU16(is); u16 count = readU16(is);
for(u16 i=0; i<count; i++) for(u16 i = 0; i < count; i++) {
{
StaticObject s_obj; StaticObject s_obj;
s_obj.deSerialize(is, version); s_obj.deSerialize(is, version);
m_stored.push_back(s_obj); m_stored.push_back(s_obj);

@ -23,7 +23,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "irrlichttypes_bloated.h" #include "irrlichttypes_bloated.h"
#include <string> #include <string>
#include <sstream> #include <sstream>
#include <list> #include <vector>
#include <map> #include <map>
#include "debug.h" #include "debug.h"
@ -95,7 +95,7 @@ public:
from m_stored and inserted to m_active. from m_stored and inserted to m_active.
The caller directly manipulates these containers. The caller directly manipulates these containers.
*/ */
std::list<StaticObject> m_stored; std::vector<StaticObject> m_stored;
std::map<u16, StaticObject> m_active; std::map<u16, StaticObject> m_active;
private: private:

@ -77,7 +77,6 @@ private:
std::queue<Value> m_queue; std::queue<Value> m_queue;
}; };
#if 1
template<typename Key, typename Value> template<typename Key, typename Value>
class MutexedMap class MutexedMap
{ {
@ -109,9 +108,9 @@ public:
return true; return true;
} }
std::list<Value> getValues() std::vector<Value> getValues()
{ {
std::list<Value> result; std::vector<Value> result;
for(typename std::map<Key, Value>::iterator for(typename std::map<Key, Value>::iterator
i = m_values.begin(); i = m_values.begin();
i != m_values.end(); ++i){ i != m_values.end(); ++i){
@ -129,7 +128,6 @@ private:
std::map<Key, Value> m_values; std::map<Key, Value> m_values;
JMutex m_mutex; JMutex m_mutex;
}; };
#endif
/* /*
Generates ids for comparable values. Generates ids for comparable values.