[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