[Orxonox-commit 131] r2823 - branches/netp/src/network/synchronisable

rgrieder at orxonox.net rgrieder at orxonox.net
Mon Mar 23 11:12:14 CET 2009


Author: rgrieder
Date: 2009-03-23 10:12:14 +0000 (Mon, 23 Mar 2009)
New Revision: 2823

Modified:
   branches/netp/src/network/synchronisable/Synchronisable.cc
   branches/netp/src/network/synchronisable/Synchronisable.h
Log:
Further optimisations by using std::vector instead of std::list for the sync lists.

Modified: branches/netp/src/network/synchronisable/Synchronisable.cc
===================================================================
--- branches/netp/src/network/synchronisable/Synchronisable.cc	2009-03-23 09:28:25 UTC (rev 2822)
+++ branches/netp/src/network/synchronisable/Synchronisable.cc	2009-03-23 10:12:14 UTC (rev 2823)
@@ -97,7 +97,7 @@
   Synchronisable::~Synchronisable(){
     // delete callback function objects
     if(!Identifier::isCreatingHierarchy()){
-      for(std::list<SynchronisableVariableBase*>::iterator it = syncList.begin(); it!=syncList.end(); it++)
+      for(std::vector<SynchronisableVariableBase*>::iterator it = syncList.begin(); it!=syncList.end(); it++)
         delete (*it);
       if (this->objectMode_ != 0x0 && (Host::running() && Host::isServer()))
         deletedObjects_.push(objectID);
@@ -251,7 +251,7 @@
         this->classID = this->getIdentifier()->getNetworkID();
 
     assert(this->classID==this->getIdentifier()->getNetworkID());
-    std::list<SynchronisableVariableBase*>::iterator i;
+    std::vector<SynchronisableVariableBase*>::iterator i;
 
     // start copy header
     SynchronisableHeader header(mem);
@@ -291,7 +291,7 @@
   bool Synchronisable::updateData(uint8_t*& mem, uint8_t mode, bool forceCallback){
     if(mode==0x0)
       mode=state_;
-    std::list<SynchronisableVariableBase *>::iterator i;
+    std::vector<SynchronisableVariableBase *>::iterator i;
     if(syncList.empty()){
       assert(0);
       COUT(4) << "Synchronisable::updateData syncList is empty" << std::endl;
@@ -336,7 +336,7 @@
       return 0;
     assert( mode==state_ );
     tsize += this->dataSize_;
-    std::list<SynchronisableVariableBase*>::iterator i;
+    std::vector<SynchronisableVariableBase*>::iterator i;
     for(i=stringList.begin(); i!=stringList.end(); ++i){
       tsize += (*i)->getSize( mode );
     }

Modified: branches/netp/src/network/synchronisable/Synchronisable.h
===================================================================
--- branches/netp/src/network/synchronisable/Synchronisable.h	2009-03-23 09:28:25 UTC (rev 2822)
+++ branches/netp/src/network/synchronisable/Synchronisable.h	2009-03-23 10:12:14 UTC (rev 2823)
@@ -32,6 +32,7 @@
 #include "network/NetworkPrereqs.h"
 
 #include <list>
+#include <vector>
 #include <map>
 #include <queue>
 #include <cassert>
@@ -155,8 +156,8 @@
     uint32_t creatorID;
     uint32_t classID;
 
-    std::list<SynchronisableVariableBase*> syncList;
-    std::list<SynchronisableVariableBase*> stringList;
+    std::vector<SynchronisableVariableBase*> syncList;
+    std::vector<SynchronisableVariableBase*> stringList;
     uint32_t dataSize_; //size of all variables except strings
     static uint8_t state_; // detemines wheter we are server (default) or client
     bool backsync_; // if true the variables with mode > 1 will be synchronised to server (client -> server)
@@ -195,7 +196,7 @@
 
 
 //   template <class T> void Synchronisable::unregisterVariable(T& var){
-//     std::list<SynchronisableVariableBase*>::iterator it = syncList.begin();
+//     std::vector<SynchronisableVariableBase*>::iterator it = syncList.begin();
 //     while(it!=syncList.end()){
 //       if( ((*it)->getReference()) == &var ){
 //         delete (*it);




More information about the Orxonox-commit mailing list