[Orxonox-commit 6263] r10920 - in code/branches/cpp11_v2: src/libraries/core src/libraries/core/class src/libraries/core/object src/libraries/network/packet src/modules/gametypes src/modules/jump src/modules/mini4dgame src/modules/overlays/debugging src/orxonox src/orxonox/gamestates src/orxonox/gametypes test/core/object

landauf at orxonox.net landauf at orxonox.net
Sun Dec 6 14:51:15 CET 2015


Author: landauf
Date: 2015-12-06 14:51:14 +0100 (Sun, 06 Dec 2015)
New Revision: 10920

Modified:
   code/branches/cpp11_v2/src/libraries/core/ClassTreeMask.cc
   code/branches/cpp11_v2/src/libraries/core/Loader.cc
   code/branches/cpp11_v2/src/libraries/core/class/Identifier.h
   code/branches/cpp11_v2/src/libraries/core/object/ObjectList.h
   code/branches/cpp11_v2/src/libraries/core/object/ObjectListIterator.h
   code/branches/cpp11_v2/src/libraries/network/packet/Gamestate.cc
   code/branches/cpp11_v2/src/modules/gametypes/SpaceRaceController.cc
   code/branches/cpp11_v2/src/modules/jump/Jump.cc
   code/branches/cpp11_v2/src/modules/mini4dgame/Mini4Dgame.cc
   code/branches/cpp11_v2/src/modules/overlays/debugging/DebugPositionText.cc
   code/branches/cpp11_v2/src/orxonox/Radar.cc
   code/branches/cpp11_v2/src/orxonox/gamestates/GSLevel.cc
   code/branches/cpp11_v2/src/orxonox/gamestates/GSRoot.cc
   code/branches/cpp11_v2/src/orxonox/gametypes/Gametype.cc
   code/branches/cpp11_v2/test/core/object/IteratorTest.cc
   code/branches/cpp11_v2/test/core/object/ListableTest.cc
   code/branches/cpp11_v2/test/core/object/ObjectListIteratorTest.cc
   code/branches/cpp11_v2/test/core/object/ObjectListTest.cc
Log:
no static functions anymore in ObjectList. you need to instantiate an ObjectList to use it.
this allows for prettier for-loop syntax when iterating over an ObjectList of a specific context: for (T* object : ObjectList<T>(context)) { ... }

Modified: code/branches/cpp11_v2/src/libraries/core/ClassTreeMask.cc
===================================================================
--- code/branches/cpp11_v2/src/libraries/core/ClassTreeMask.cc	2015-12-05 21:47:51 UTC (rev 10919)
+++ code/branches/cpp11_v2/src/libraries/core/ClassTreeMask.cc	2015-12-06 13:51:14 UTC (rev 10920)
@@ -850,7 +850,7 @@
         if (this->subclassIterator_ != this->subclasses_.end())
             this->objectIterator_ = Context::getRootContext()->getObjectList(this->subclassIterator_->first)->begin();
         else
-            this->objectIterator_ = ObjectList<BaseObject>::end();
+            this->objectIterator_ = ObjectList<BaseObject>().end();
 
         // Check if the iterator points on a valid object. If not, go to the next object by calling ++
         if (!this->objectIterator_ || (this->subclassIterator_->second && !this->objectIterator_->isExactlyA(this->subclassIterator_->first)))

Modified: code/branches/cpp11_v2/src/libraries/core/Loader.cc
===================================================================
--- code/branches/cpp11_v2/src/libraries/core/Loader.cc	2015-12-05 21:47:51 UTC (rev 10919)
+++ code/branches/cpp11_v2/src/libraries/core/Loader.cc	2015-12-06 13:51:14 UTC (rev 10920)
@@ -206,7 +206,7 @@
     {
         if (!file)
             return;
-        for (ObjectList<BaseObject>::iterator it = ObjectList<BaseObject>::begin(); it; )
+        for (ObjectList<BaseObject>::iterator it = ObjectList<BaseObject>().begin(); it; )
         {
             if ((it->getFile() == file) && mask.isIncluded(it->getIdentifier()))
                 (it++)->destroy();

Modified: code/branches/cpp11_v2/src/libraries/core/class/Identifier.h
===================================================================
--- code/branches/cpp11_v2/src/libraries/core/class/Identifier.h	2015-12-05 21:47:51 UTC (rev 10919)
+++ code/branches/cpp11_v2/src/libraries/core/class/Identifier.h	2015-12-06 13:51:14 UTC (rev 10920)
@@ -414,10 +414,8 @@
     template <class T>
     void ClassIdentifier<T>::destroyObjects(Listable*)
     {
-        ObjectListBase* objectList = Context::getRootContext()->getObjectList(this);
-        ObjectListElement<T>* begin = static_cast<ObjectListElement<T>*>(objectList->begin());
-        ObjectListElement<T>* end = static_cast<ObjectListElement<T>*>(objectList->end());
-        for (typename ObjectList<T>::iterator it = begin; it != end; )
+        ObjectList<T> list(Context::getRootContext()->getObjectList(this));
+        for (typename ObjectList<T>::iterator it = list.begin(); it != list.end(); )
             this->destroyObject(*(it++));
     }
 

Modified: code/branches/cpp11_v2/src/libraries/core/object/ObjectList.h
===================================================================
--- code/branches/cpp11_v2/src/libraries/core/object/ObjectList.h	2015-12-05 21:47:51 UTC (rev 10919)
+++ code/branches/cpp11_v2/src/libraries/core/object/ObjectList.h	2015-12-06 13:51:14 UTC (rev 10920)
@@ -70,54 +70,30 @@
         public:
             typedef ObjectListIterator<T> iterator;
 
-            /// Returns the size of the list (for the root context)
-            inline static size_t size()
-            {   return size(Context::getRootContext());   }
+            ObjectList() : ObjectList(Context::getRootContext()) {}
+            ObjectList(Context* context) : ObjectList(context->getObjectList<T>()) {}
+            ObjectList(ObjectListBase* list) : list_(list) {}
+
             /// Returns the size of the list
-            inline static size_t size(Context* context)
-            {
-                return context->getObjectList<T>()->size();
-            }
+            inline size_t size()
+            {   return this->list_->size();   }
 
-            /// Returns an Iterator to the first element in the list (for the root context).
-            inline static ObjectListIterator<T> begin()
-            {   return begin(Context::getRootContext());   }
             /// Returns an Iterator to the first element in the list.
-            inline static ObjectListIterator<T> begin(Context* context)
-            {
-                ObjectListBase* list = context->getObjectList<T>();
-                return static_cast<ObjectListElement<T>*>(list->begin());
-            }
-
-            /// Returns an Iterator to the element after the last element in the list (for the root context).
-            inline static ObjectListIterator<T> end()
-            {   return end(Context::getRootContext());   }
+            inline ObjectListIterator<T> begin()
+            {   return static_cast<ObjectListElement<T>*>(this->list_->begin());   }
             /// Returns an Iterator to the element after the last element in the list.
-            inline static ObjectListIterator<T> end(Context* context)
-            {
-                ObjectListBase* list = context->getObjectList<T>();
-                return static_cast<ObjectListElement<T>*>(list->end());
-            }
+            inline ObjectListIterator<T> end()
+            {   return static_cast<ObjectListElement<T>*>(this->list_->end());   }
 
-            /// Returns an Iterator to the last element in the list (for the root context).
-            inline static ObjectListIterator<T> rbegin()
-            {   return rbegin(Context::getRootContext());   }
             /// Returns an Iterator to the last element in the list.
-            inline static ObjectListIterator<T> rbegin(Context* context)
-            {
-                ObjectListBase* list = context->getObjectList<T>();
-                return static_cast<ObjectListElement<T>*>(list->rbegin());
-            }
-
-            /// Returns an Iterator to the element before the first element in the list (for the root context).
-            inline static ObjectListIterator<T> rend()
-            {   return rend(Context::getRootContext());   }
+            inline ObjectListIterator<T> rbegin()
+            {   return static_cast<ObjectListElement<T>*>(this->list_->rbegin());   }
             /// Returns an Iterator to the element before the first element in the list.
-            inline static ObjectListIterator<T> rend(Context* context)
-            {
-                ObjectListBase* list = context->getObjectList<T>();
-                return static_cast<ObjectListElement<T>*>(list->rend());
-            }
+            inline ObjectListIterator<T> rend()
+            {   return static_cast<ObjectListElement<T>*>(this->list_->rend());   }
+
+        private:
+            ObjectListBase* list_;
     };
 }
 

Modified: code/branches/cpp11_v2/src/libraries/core/object/ObjectListIterator.h
===================================================================
--- code/branches/cpp11_v2/src/libraries/core/object/ObjectListIterator.h	2015-12-05 21:47:51 UTC (rev 10919)
+++ code/branches/cpp11_v2/src/libraries/core/object/ObjectListIterator.h	2015-12-06 13:51:14 UTC (rev 10920)
@@ -40,7 +40,8 @@
 
     Usage:
     @code
-    for (ObjectListIterator<myClass> it = ObjectList<myClass>::begin(); it != ObjectList<myClass>::end(); ++it)
+    ObjectList<myClass> list;
+    for (ObjectListIterator<myClass> it = list.begin(); it != list.end(); ++it)
     {
         it->someFunction(...);
         myClass* myObject = *it;

Modified: code/branches/cpp11_v2/src/libraries/network/packet/Gamestate.cc
===================================================================
--- code/branches/cpp11_v2/src/libraries/network/packet/Gamestate.cc	2015-12-05 21:47:51 UTC (rev 10919)
+++ code/branches/cpp11_v2/src/libraries/network/packet/Gamestate.cc	2015-12-06 13:51:14 UTC (rev 10920)
@@ -125,7 +125,7 @@
   uint8_t *mem = data_; // in this stream store all data of the variables and the headers of the synchronisable
   mem += GamestateHeader::getSize();
   ObjectList<Synchronisable>::iterator it;
-  for(it = ObjectList<Synchronisable>::begin(); it; ++it)
+  for(it = ObjectList<Synchronisable>().begin(); it; ++it)
   {
 
 //     tempsize=it->getSize(id, mode);

Modified: code/branches/cpp11_v2/src/modules/gametypes/SpaceRaceController.cc
===================================================================
--- code/branches/cpp11_v2/src/modules/gametypes/SpaceRaceController.cc	2015-12-05 21:47:51 UTC (rev 10919)
+++ code/branches/cpp11_v2/src/modules/gametypes/SpaceRaceController.cc	2015-12-06 13:51:14 UTC (rev 10920)
@@ -58,8 +58,8 @@
         std::vector<RaceCheckPoint*> checkpoints;
 
         virtualCheckPointIndex = -2;
-        if (ObjectList<SpaceRaceManager>::size() != 1)
-            orxout(internal_warning) << "Expected 1 instance of SpaceRaceManager but found " << ObjectList<SpaceRaceManager>::size() << endl;
+        if (ObjectList<SpaceRaceManager>().size() != 1)
+            orxout(internal_warning) << "Expected 1 instance of SpaceRaceManager but found " << ObjectList<SpaceRaceManager>().size() << endl;
         for (SpaceRaceManager* manager : ObjectList<SpaceRaceManager>())
         {
             checkpoints = manager->getAllCheckpoints();
@@ -298,7 +298,8 @@
     {
         orxout()<<"add VCP at"<<virtualCheckPointPosition.x<<", "<<virtualCheckPointPosition.y<<", "<<virtualCheckPointPosition.z<<endl;
         RaceCheckPoint* newTempRaceCheckPoint;
-        for (ObjectList<SpaceRaceManager>::iterator it = ObjectList<SpaceRaceManager>::begin(); it!= ObjectList<SpaceRaceManager>::end(); ++it)
+        ObjectList<SpaceRaceManager> list;
+        for (ObjectList<SpaceRaceManager>::iterator it = list.begin(); it!= list.end(); ++it)
         {
             newTempRaceCheckPoint = new RaceCheckPoint((*it));
         }
@@ -487,7 +488,8 @@
         Vector3 point2 = racepoint2->getPosition();
         std::vector<StaticEntity*> problematicObjects;
 
-        for (ObjectList<StaticEntity>::iterator it = ObjectList<StaticEntity>::begin(); it!= ObjectList<StaticEntity>::end(); ++it)
+        ObjectList<StaticEntity> list;
+        for (ObjectList<StaticEntity>::iterator it = list.begin(); it!= list.end(); ++it)
         {
 
             if (dynamic_cast<RaceCheckPoint*>(*it) != nullptr)

Modified: code/branches/cpp11_v2/src/modules/jump/Jump.cc
===================================================================
--- code/branches/cpp11_v2/src/modules/jump/Jump.cc	2015-12-05 21:47:51 UTC (rev 10919)
+++ code/branches/cpp11_v2/src/modules/jump/Jump.cc	2015-12-06 13:51:14 UTC (rev 10920)
@@ -140,12 +140,11 @@
             }
         }
 
-        ObjectList<JumpPlatform>::iterator beginPlatform = ObjectList<JumpPlatform>::begin();
-        ObjectList<JumpPlatform>::iterator endPlatform = ObjectList<JumpPlatform>::end();
-        ObjectList<JumpPlatform>::iterator itPlatform = beginPlatform;
+        ObjectList<JumpPlatform> listPlatform;
+        ObjectList<JumpPlatform>::iterator itPlatform = listPlatform.begin();
         Vector3 platformPosition;
 
-        while (itPlatform != endPlatform)
+        while (itPlatform != listPlatform.end())
         {
             platformPosition = itPlatform->getPosition();
             if (platformPosition.z < totalScreenShift_ - center_->getFieldDimension().y)
@@ -162,11 +161,10 @@
         }
 
         // Deleted deactivated platforms
-        ObjectList<JumpPlatformDisappear>::iterator beginDisappear = ObjectList<JumpPlatformDisappear>::begin();
-        ObjectList<JumpPlatformDisappear>::iterator endDisappear = ObjectList<JumpPlatformDisappear>::end();
-        ObjectList<JumpPlatformDisappear>::iterator itDisappear = beginDisappear;
+        ObjectList<JumpPlatformDisappear> listDisappear;
+        ObjectList<JumpPlatformDisappear>::iterator itDisappear = listDisappear.begin();
 
-        while (itDisappear != endDisappear)
+        while (itDisappear != listDisappear.end())
         {
             if (!itDisappear->isActive())
             {
@@ -181,11 +179,10 @@
             }
         }
 
-        ObjectList<JumpPlatformTimer>::iterator beginTimer = ObjectList<JumpPlatformTimer>::begin();
-        ObjectList<JumpPlatformTimer>::iterator endTimer = ObjectList<JumpPlatformTimer>::end();
-        ObjectList<JumpPlatformTimer>::iterator itTimer = beginTimer;
+        ObjectList<JumpPlatformTimer> listTimer;
+        ObjectList<JumpPlatformTimer>::iterator itTimer = listTimer.begin();
 
-        while (itTimer != endTimer)
+        while (itTimer != listTimer.end())
         {
             if (!itTimer->isActive())
             {
@@ -200,12 +197,11 @@
             }
         }
 
-        ObjectList<JumpProjectile>::iterator beginProjectile = ObjectList<JumpProjectile>::begin();
-        ObjectList<JumpProjectile>::iterator endProjectile = ObjectList<JumpProjectile>::end();
-        ObjectList<JumpProjectile>::iterator itProjectile = beginProjectile;
+        ObjectList<JumpProjectile> listProjectile;
+        ObjectList<JumpProjectile>::iterator itProjectile = listProjectile.begin();
         Vector3 projectilePosition;
 
-        while (itProjectile != endProjectile)
+        while (itProjectile != listProjectile.end())
         {
             projectilePosition = itProjectile->getPosition();
             if (projectilePosition.z > totalScreenShift_ + 5*center_->getFieldDimension().y)
@@ -221,12 +217,11 @@
             }
         }
 
-        ObjectList<JumpEnemy>::iterator beginEnemy = ObjectList<JumpEnemy>::begin();
-        ObjectList<JumpEnemy>::iterator endEnemy = ObjectList<JumpEnemy>::end();
-        ObjectList<JumpEnemy>::iterator itEnemy = beginEnemy;
+        ObjectList<JumpEnemy> listEnemy;
+        ObjectList<JumpEnemy>::iterator itEnemy = listEnemy.begin();
         Vector3 enemyPosition;
 
-        while (itEnemy != endEnemy)
+        while (itEnemy != listEnemy.end())
         {
             enemyPosition = itEnemy->getPosition();
             if (enemyPosition.z < totalScreenShift_ - center_->getFieldDimension().y || itEnemy->dead_ == true)
@@ -242,12 +237,11 @@
             }
         }
 
-        ObjectList<JumpItem>::iterator beginItem = ObjectList<JumpItem>::begin();
-        ObjectList<JumpItem>::iterator endItem = ObjectList<JumpItem>::end();
-        ObjectList<JumpItem>::iterator itItem = beginItem;
+        ObjectList<JumpItem> listItem;
+        ObjectList<JumpItem>::iterator itItem = listItem.begin();
         Vector3 itemPosition;
 
-        while (itItem != endItem)
+        while (itItem != listItem.end())
         {
             itemPosition = itItem->getPosition();
 

Modified: code/branches/cpp11_v2/src/modules/mini4dgame/Mini4Dgame.cc
===================================================================
--- code/branches/cpp11_v2/src/modules/mini4dgame/Mini4Dgame.cc	2015-12-05 21:47:51 UTC (rev 10919)
+++ code/branches/cpp11_v2/src/modules/mini4dgame/Mini4Dgame.cc	2015-12-06 13:51:14 UTC (rev 10920)
@@ -182,7 +182,7 @@
 
     void Mini4Dgame::undoStone()//Vector4 move, const int playerColor)
     {
-        ObjectList<Mini4DgameBoard>::iterator it = ObjectList<Mini4DgameBoard>::begin();
+        ObjectList<Mini4DgameBoard>::iterator it = ObjectList<Mini4DgameBoard>().begin();
         it->undoMove();
     }
 
@@ -190,7 +190,7 @@
     void Mini4Dgame::setStone(int x,int y,int z,int w)//Vector4 move, const int playerColor)
     {
         Mini4DgamePosition move = Mini4DgamePosition(x,y,z,w);
-        ObjectList<Mini4DgameBoard>::iterator it = ObjectList<Mini4DgameBoard>::begin();
+        ObjectList<Mini4DgameBoard>::iterator it = ObjectList<Mini4DgameBoard>().begin();
         it->makeMove(move);
     }
 

Modified: code/branches/cpp11_v2/src/modules/overlays/debugging/DebugPositionText.cc
===================================================================
--- code/branches/cpp11_v2/src/modules/overlays/debugging/DebugPositionText.cc	2015-12-05 21:47:51 UTC (rev 10919)
+++ code/branches/cpp11_v2/src/modules/overlays/debugging/DebugPositionText.cc	2015-12-06 13:51:14 UTC (rev 10920)
@@ -51,7 +51,7 @@
     {
         SUPER(DebugPositionText, tick, dt);
         
-        ObjectList<NewHumanController>::iterator it = ObjectList<NewHumanController>::begin();
+        ObjectList<NewHumanController>::iterator it = ObjectList<NewHumanController>().begin();
         if (it && it->getControllableEntity() )
         {
             Vector3 pos = it->getControllableEntity()->getPosition();

Modified: code/branches/cpp11_v2/src/orxonox/Radar.cc
===================================================================
--- code/branches/cpp11_v2/src/orxonox/Radar.cc	2015-12-05 21:47:51 UTC (rev 10919)
+++ code/branches/cpp11_v2/src/orxonox/Radar.cc	2015-12-06 13:51:14 UTC (rev 10920)
@@ -137,7 +137,8 @@
 
     void Radar::cycleFocus()
     {
-        if (ObjectList<RadarViewable>::begin() == ObjectList<RadarViewable>::end())
+        ObjectList<RadarViewable> listRadarViewable;
+        if (listRadarViewable.size() == 0)
         {
             // list is empty
             this->itFocus_ = nullptr;
@@ -157,7 +158,7 @@
             float minimumDistance = FLT_MAX;
             ObjectList<RadarViewable>::iterator itFallback = nullptr;
 
-            for (ObjectList<RadarViewable>::iterator it = ObjectList<RadarViewable>::begin(); it; ++it)
+            for (ObjectList<RadarViewable>::iterator it = listRadarViewable.begin(); it; ++it)
             {
                 if (*it == static_cast<RadarViewable*>(HumanController::getLocalControllerEntityAsPawn()))
                     continue;

Modified: code/branches/cpp11_v2/src/orxonox/gamestates/GSLevel.cc
===================================================================
--- code/branches/cpp11_v2/src/orxonox/gamestates/GSLevel.cc	2015-12-05 21:47:51 UTC (rev 10919)
+++ code/branches/cpp11_v2/src/orxonox/gamestates/GSLevel.cc	2015-12-06 13:51:14 UTC (rev 10920)
@@ -214,14 +214,17 @@
      */
     void GSLevel::unloadLevelAsClient()
     {
-        for (ObjectList<Level>::iterator it = ObjectList<Level>::begin(); it != ObjectList<Level>::end(); )
+        ObjectList<Level> listLevel;
+        for (ObjectList<Level>::iterator it = listLevel.begin(); it != listLevel.end(); )
         {
             StrongPtr<Level> level = *(it++); // StrongPtr prevents that the Level gets destroyed while we loop over it
-            for (ObjectList<BaseObject>::iterator it = ObjectList<BaseObject>::begin(level); it != ObjectList<BaseObject>::end(level); )
+            ObjectList<BaseObject> listBaseObject(level);
+            for (ObjectList<BaseObject>::iterator it = listBaseObject.begin(); it != listBaseObject.end(); )
                 (it++)->destroy();
         }
 
-        for (ObjectList<Synchronisable>::iterator it = ObjectList<Synchronisable>::begin(); it != ObjectList<Synchronisable>::end(); )
+        ObjectList<Synchronisable> listSynchronisable;
+        for (ObjectList<Synchronisable>::iterator it = listSynchronisable.begin(); it != listSynchronisable.end(); )
         {
             if (it->getSyncMode() != 0x0)
                 (it++)->destroy();

Modified: code/branches/cpp11_v2/src/orxonox/gamestates/GSRoot.cc
===================================================================
--- code/branches/cpp11_v2/src/orxonox/gamestates/GSRoot.cc	2015-12-05 21:47:51 UTC (rev 10919)
+++ code/branches/cpp11_v2/src/orxonox/gamestates/GSRoot.cc	2015-12-06 13:51:14 UTC (rev 10920)
@@ -112,7 +112,8 @@
             startMainMenu_s = false;
         }
 
-        for (ObjectList<Timer>::iterator it = ObjectList<Timer>::begin(); it; )
+        ObjectList<Timer> listTimer;
+        for (ObjectList<Timer>::iterator it = listTimer.begin(); it; )
         {
             Timer* object = *it;
             ++it;
@@ -128,7 +129,8 @@
             leveldt = 0.0f;
         }
         float realdt = leveldt * TimeFactorListener::getTimeFactor();
-        for (ObjectList<Tickable>::iterator it = ObjectList<Tickable>::begin(); it; )
+        ObjectList<Tickable> listTickable;
+        for (ObjectList<Tickable>::iterator it = listTickable.begin(); it; )
         {
             Tickable* object = *it;
             ++it;

Modified: code/branches/cpp11_v2/src/orxonox/gametypes/Gametype.cc
===================================================================
--- code/branches/cpp11_v2/src/orxonox/gametypes/Gametype.cc	2015-12-05 21:47:51 UTC (rev 10919)
+++ code/branches/cpp11_v2/src/orxonox/gametypes/Gametype.cc	2015-12-06 13:51:14 UTC (rev 10920)
@@ -491,7 +491,8 @@
     void Gametype::killBots(unsigned int amount)
     {
         unsigned int i = 0;
-        for (ObjectList<Bot>::iterator it = ObjectList<Bot>::begin(); (it != ObjectList<Bot>::end()) && ((amount == 0) || (i < amount)); )
+        ObjectList<Bot> list;
+        for (ObjectList<Bot>::iterator it = list.begin(); (it != list.end()) && ((amount == 0) || (i < amount)); )
         {
             if (it->getGametype() == this)
             {

Modified: code/branches/cpp11_v2/test/core/object/IteratorTest.cc
===================================================================
--- code/branches/cpp11_v2/test/core/object/IteratorTest.cc	2015-12-05 21:47:51 UTC (rev 10919)
+++ code/branches/cpp11_v2/test/core/object/IteratorTest.cc	2015-12-06 13:51:14 UTC (rev 10920)
@@ -54,13 +54,15 @@
 
     TEST_F(IteratorTest, CanAssignIterator)
     {
-        Iterator<TestInterface> it = ObjectList<TestInterface>::begin();
+        ObjectList<TestInterface> list;
+        Iterator<TestInterface> it = list.begin();
     }
 
     TEST_F(IteratorTest, CanIterateOverEmptyList)
     {
         size_t i = 0;
-        for (Iterator<TestInterface> it = ObjectList<TestInterface>::begin(); it != ObjectList<TestInterface>::end(); ++it)
+        ObjectList<TestInterface> list;
+        for (Iterator<TestInterface> it = list.begin(); it != list.end(); ++it)
             ++i;
         EXPECT_EQ(0u, i);
     }
@@ -76,7 +78,8 @@
         EXPECT_CALL(test3, test());
 
         // iterate over interfaces but use a TestClass iterator - now we can call TestClass::test()
-        for (Iterator<TestClass> it = ObjectList<TestInterface>::begin(); it != ObjectList<TestInterface>::end(); ++it)
+        ObjectList<TestInterface> list;
+        for (Iterator<TestClass> it = list.begin(); it != list.end(); ++it)
             it->test();
     }
 
@@ -86,7 +89,8 @@
         TestInterface testInterface;
 
         size_t i = 0;
-        for (Iterator<TestInterface> it = ObjectList<TestInterface>::begin(); it != ObjectList<TestInterface>::end(); ++it)
+        ObjectList<TestInterface> list;
+        for (Iterator<TestInterface> it = list.begin(); it != list.end(); ++it)
         {
             ++i;
             if (i == 1u) EXPECT_EQ(&testClass, *it);
@@ -101,7 +105,8 @@
         TestInterface testInterface;
 
         size_t i = 0;
-        for (Iterator<TestClass> it = ObjectList<TestClass>::begin(); it != ObjectList<TestClass>::end(); ++it)
+        ObjectList<TestClass> list;
+        for (Iterator<TestClass> it = list.begin(); it != list.end(); ++it)
         {
             ++i;
             if (i == 1u) EXPECT_EQ(&testClass, *it);
@@ -115,7 +120,8 @@
         TestInterface testInterface;
 
         size_t i = 0;
-        for (Iterator<TestClass> it = ObjectList<TestInterface>::begin(); it != ObjectList<TestInterface>::end(); ++it)
+        ObjectList<TestInterface> list;
+        for (Iterator<TestClass> it = list.begin(); it != list.end(); ++it)
         {
             ++i;
             if (i == 1u) EXPECT_EQ(&testClass, *it);
@@ -130,7 +136,8 @@
         TestInterface testInterface;
 
         size_t i = 0;
-        for (Iterator<TestInterface> it = ObjectList<TestClass>::begin(); it != ObjectList<TestClass>::end(); ++it)
+        ObjectList<TestClass> list;
+        for (Iterator<TestInterface> it = list.begin(); it != list.end(); ++it)
         {
             ++i;
             if (i == 1u) EXPECT_EQ(&testClass, *it);

Modified: code/branches/cpp11_v2/test/core/object/ListableTest.cc
===================================================================
--- code/branches/cpp11_v2/test/core/object/ListableTest.cc	2015-12-05 21:47:51 UTC (rev 10919)
+++ code/branches/cpp11_v2/test/core/object/ListableTest.cc	2015-12-06 13:51:14 UTC (rev 10920)
@@ -62,43 +62,43 @@
     TEST_F(ListableTest, AddsToObjectList)
     {
         ListableClassTest test;
-        EXPECT_EQ(1u, ObjectList<ListableClassTest>::size());
+        EXPECT_EQ(1u, ObjectList<ListableClassTest>().size());
         EXPECT_TRUE(objectListContains<ListableClassTest>(&test));
     }
 
     TEST_F(ListableTest, AddsToAllObjectLists)
     {
         ListableSubclassTest test;
-        EXPECT_EQ(1u, ObjectList<ListableClassTest>::size());
+        EXPECT_EQ(1u, ObjectList<ListableClassTest>().size());
         EXPECT_TRUE(objectListContains<ListableClassTest>(&test));
-        EXPECT_EQ(1u, ObjectList<ListableSubclassTest>::size());
+        EXPECT_EQ(1u, ObjectList<ListableSubclassTest>().size());
         EXPECT_TRUE(objectListContains<ListableSubclassTest>(&test));
     }
 
     TEST_F(ListableTest, RemovesFromObjectList)
     {
-        EXPECT_EQ(0u, ObjectList<ListableClassTest>::size());
+        EXPECT_EQ(0u, ObjectList<ListableClassTest>().size());
         {
             ListableClassTest test;
-            EXPECT_EQ(1u, ObjectList<ListableClassTest>::size());
+            EXPECT_EQ(1u, ObjectList<ListableClassTest>().size());
             EXPECT_TRUE(objectListContains<ListableClassTest>(&test));
         }
-        EXPECT_EQ(0u, ObjectList<ListableClassTest>::size());
+        EXPECT_EQ(0u, ObjectList<ListableClassTest>().size());
     }
 
     TEST_F(ListableTest, RemovesFromAllObjectLists)
     {
-        EXPECT_EQ(0u, ObjectList<ListableClassTest>::size());
-        EXPECT_EQ(0u, ObjectList<ListableSubclassTest>::size());
+        EXPECT_EQ(0u, ObjectList<ListableClassTest>().size());
+        EXPECT_EQ(0u, ObjectList<ListableSubclassTest>().size());
         {
             ListableSubclassTest test;
-            EXPECT_EQ(1u, ObjectList<ListableClassTest>::size());
+            EXPECT_EQ(1u, ObjectList<ListableClassTest>().size());
             EXPECT_TRUE(objectListContains<ListableClassTest>(&test));
-            EXPECT_EQ(1u, ObjectList<ListableSubclassTest>::size());
+            EXPECT_EQ(1u, ObjectList<ListableSubclassTest>().size());
             EXPECT_TRUE(objectListContains<ListableSubclassTest>(&test));
         }
-        EXPECT_EQ(0u, ObjectList<ListableClassTest>::size());
-        EXPECT_EQ(0u, ObjectList<ListableSubclassTest>::size());
+        EXPECT_EQ(0u, ObjectList<ListableClassTest>().size());
+        EXPECT_EQ(0u, ObjectList<ListableSubclassTest>().size());
     }
 
     TEST_F(ListableTest, CanAddObjectToContext)

Modified: code/branches/cpp11_v2/test/core/object/ObjectListIteratorTest.cc
===================================================================
--- code/branches/cpp11_v2/test/core/object/ObjectListIteratorTest.cc	2015-12-05 21:47:51 UTC (rev 10919)
+++ code/branches/cpp11_v2/test/core/object/ObjectListIteratorTest.cc	2015-12-06 13:51:14 UTC (rev 10920)
@@ -54,13 +54,15 @@
 
     TEST_F(ObjectListIteratorTest, CanAssignIterator)
     {
-        ObjectListIterator<TestClass> it = ObjectList<TestClass>::begin();
+        ObjectList<TestClass> list;
+        ObjectListIterator<TestClass> it = list.begin();
     }
 
     TEST_F(ObjectListIteratorTest, CanIterateOverEmptyList)
     {
         size_t i = 0;
-        for (ObjectListIterator<TestClass> it = ObjectList<TestClass>::begin(); it != ObjectList<TestClass>::end(); ++it)
+        ObjectList<TestClass> list;
+        for (ObjectListIterator<TestClass> it = list.begin(); it != list.end(); ++it)
             ++i;
         EXPECT_EQ(0u, i);
     }
@@ -73,7 +75,8 @@
         TestInterface interface;
 
         size_t i = 0;
-        for (ObjectListIterator<TestClass> it = ObjectList<TestClass>::begin(); it != ObjectList<TestClass>::end(); ++it)
+        ObjectList<TestClass> list;
+        for (ObjectListIterator<TestClass> it = list.begin(); it != list.end(); ++it)
         {
             ++i;
             if (i == 1u) EXPECT_EQ(&test1, *it);
@@ -91,7 +94,8 @@
         TestInterface interface;
 
         size_t i = 0;
-        for (ObjectListIterator<TestClass> it = ObjectList<TestClass>::rbegin(); it != ObjectList<TestClass>::rend(); --it)
+        ObjectList<TestClass> list;
+        for (ObjectListIterator<TestClass> it = list.rbegin(); it != list.rend(); --it)
         {
             ++i;
             if (i == 1u) EXPECT_EQ(&test3, *it);
@@ -112,7 +116,8 @@
         EXPECT_CALL(test2, test());
         EXPECT_CALL(test3, test());
 
-        for (ObjectListIterator<TestClass> it = ObjectList<TestClass>::begin(); it != ObjectList<TestClass>::end(); ++it)
+        ObjectList<TestClass> list;
+        for (ObjectListIterator<TestClass> it = list.begin(); it != list.end(); ++it)
             it->test();
     }
 }

Modified: code/branches/cpp11_v2/test/core/object/ObjectListTest.cc
===================================================================
--- code/branches/cpp11_v2/test/core/object/ObjectListTest.cc	2015-12-05 21:47:51 UTC (rev 10919)
+++ code/branches/cpp11_v2/test/core/object/ObjectListTest.cc	2015-12-06 13:51:14 UTC (rev 10920)
@@ -14,6 +14,7 @@
         {
             public:
                 ListableTest() { RegisterObject(ListableTest); }
+                ListableTest(Context* context) : Listable(context) { RegisterObject(ListableTest); }
                 MOCK_METHOD0(test, void());
         };
 
@@ -102,4 +103,48 @@
         for (ListableTest* object : ObjectList<ListableTest>())
             object->test();
     }
+
+    TEST_F(ObjectListTest, UsesCorrectContext)
+    {
+        Context context1(Context::getRootContext());
+        Context context2(Context::getRootContext());
+
+        ListableTest test1(&context1);
+        ListableTest test2(&context1);
+        ListableTest test3(&context2);
+
+        EXPECT_EQ(3, ObjectList<ListableTest>().size());
+        EXPECT_EQ(2, ObjectList<ListableTest>(&context1).size());
+        EXPECT_EQ(1, ObjectList<ListableTest>(&context2).size());
+    }
+
+    TEST_F(ObjectListTest, CanIterateOverCorrectContext)
+    {
+        Context context1(Context::getRootContext());
+        Context context2(Context::getRootContext());
+
+        ListableTest test1(&context1);
+        ListableTest test2(&context1);
+        ListableTest test3(&context2);
+
+        {
+            size_t i = 0;
+            for (ListableTest* object : ObjectList<ListableTest>(&context1))
+            {
+                ++i;
+                if (i == 1u) EXPECT_EQ(&test1, object);
+                if (i == 2u) EXPECT_EQ(&test2, object);
+            }
+            EXPECT_EQ(2u, i);
+        }
+        {
+            size_t i = 0;
+            for (ListableTest* object : ObjectList<ListableTest>(&context2))
+            {
+                ++i;
+                if (i == 1u) EXPECT_EQ(&test3, object);
+            }
+            EXPECT_EQ(1u, i);
+        }
+    }
 }




More information about the Orxonox-commit mailing list