[Orxonox-commit 4992] r9661 - in code/branches/core6: src/libraries/core/object test/core/object

landauf at orxonox.net landauf at orxonox.net
Sat Aug 24 18:38:56 CEST 2013


Author: landauf
Date: 2013-08-24 18:38:55 +0200 (Sat, 24 Aug 2013)
New Revision: 9661

Modified:
   code/branches/core6/src/libraries/core/object/Context.h
   code/branches/core6/src/libraries/core/object/Listable.cc
   code/branches/core6/src/libraries/core/object/Listable.h
   code/branches/core6/src/libraries/core/object/ObjectListBase.h
   code/branches/core6/test/core/object/ObjectListBaseTest.cc
Log:
Listable is now responsible for creating and deleting ObjectListElements

Modified: code/branches/core6/src/libraries/core/object/Context.h
===================================================================
--- code/branches/core6/src/libraries/core/object/Context.h	2013-08-18 15:01:40 UTC (rev 9660)
+++ code/branches/core6/src/libraries/core/object/Context.h	2013-08-24 16:38:55 UTC (rev 9661)
@@ -63,7 +63,8 @@
             template <class T>
             inline void addObject(T* object)
             {
-                ObjectListBaseElement* element = this->getObjectList<T>()->add(object);
+                ObjectListBaseElement* element = Listable::createObjectListElement(object);
+                this->getObjectList<T>()->addElement(element);
                 object->elements_.push_back(element);
                 if (this->getParentContext())
                     this->getParentContext()->addObject(object);

Modified: code/branches/core6/src/libraries/core/object/Listable.cc
===================================================================
--- code/branches/core6/src/libraries/core/object/Listable.cc	2013-08-18 15:01:40 UTC (rev 9660)
+++ code/branches/core6/src/libraries/core/object/Listable.cc	2013-08-24 16:38:55 UTC (rev 9661)
@@ -76,7 +76,7 @@
     void Listable::unregisterObject()
     {
         for (size_t i = 0; i < this->elements_.size(); ++i)
-            delete this->elements_[i];
+            Listable::deleteObjectListElement(this->elements_[i]);
         this->elements_.clear();
     }
 
@@ -93,10 +93,14 @@
         for (size_t i = 0; i < copy.size(); ++i)
         {
             copy[i]->changeContext(this->context_, context);
-            delete copy[i];
+            Listable::deleteObjectListElement(copy[i]);
         }
 
         this->context_ = context;
     }
 
+    /* static */ void Listable::deleteObjectListElement(ObjectListBaseElement* element)
+    {
+        delete element;
+    }
 }

Modified: code/branches/core6/src/libraries/core/object/Listable.h
===================================================================
--- code/branches/core6/src/libraries/core/object/Listable.h	2013-08-18 15:01:40 UTC (rev 9660)
+++ code/branches/core6/src/libraries/core/object/Listable.h	2013-08-24 16:38:55 UTC (rev 9661)
@@ -62,6 +62,14 @@
                 { return this->context_; }
 
         private:
+            template <class T>
+            static ObjectListElement<T>* createObjectListElement(T* object)
+            {
+                return new ObjectListElement<T>(object);
+            }
+
+            static void deleteObjectListElement(ObjectListBaseElement* element);
+
             Context* context_;                             //!< The object will register itself in the object lists of this context
             std::vector<ObjectListBaseElement*> elements_; //!< The corresponding ObjectListElements in all object lists the object is registered in
     };

Modified: code/branches/core6/src/libraries/core/object/ObjectListBase.h
===================================================================
--- code/branches/core6/src/libraries/core/object/ObjectListBase.h	2013-08-18 15:01:40 UTC (rev 9660)
+++ code/branches/core6/src/libraries/core/object/ObjectListBase.h	2013-08-24 16:38:55 UTC (rev 9661)
@@ -127,14 +127,6 @@
             ObjectListBase();
             ~ObjectListBase();
 
-            template <class T>
-            inline ObjectListBaseElement* add(T* object)
-            {
-                ObjectListBaseElement* element = new ObjectListElement<T>(object);
-                this->addElement(element);
-                return element;
-            }
-
             void addElement(ObjectListBaseElement* element);
             void removeElement(ObjectListBaseElement* element);
 

Modified: code/branches/core6/test/core/object/ObjectListBaseTest.cc
===================================================================
--- code/branches/core6/test/core/object/ObjectListBaseTest.cc	2013-08-18 15:01:40 UTC (rev 9660)
+++ code/branches/core6/test/core/object/ObjectListBaseTest.cc	2013-08-24 16:38:55 UTC (rev 9661)
@@ -42,7 +42,7 @@
     TEST(ObjectListBaseTest, CanAddObject)
     {
         ObjectListBase list;
-        list.add(static_cast<Listable*>(NULL));
+        list.addElement(new ObjectListElement<Listable>(NULL));
         EXPECT_EQ(1u, list.size());
     }
 




More information about the Orxonox-commit mailing list