[Orxonox-commit 2493] r7200 - in code/branches/consolecommands3/src: libraries/core libraries/tools modules/overlays/hud orxonox/gametypes orxonox/weaponsystem
landauf at orxonox.net
landauf at orxonox.net
Sun Aug 22 00:27:53 CEST 2010
Author: landauf
Date: 2010-08-22 00:27:53 +0200 (Sun, 22 Aug 2010)
New Revision: 7200
Modified:
code/branches/consolecommands3/src/libraries/core/BaseObject.cc
code/branches/consolecommands3/src/libraries/core/EventIncludes.h
code/branches/consolecommands3/src/libraries/core/Executor.cc
code/branches/consolecommands3/src/libraries/core/Executor.h
code/branches/consolecommands3/src/libraries/core/Thread.cc
code/branches/consolecommands3/src/libraries/core/Thread.h
code/branches/consolecommands3/src/libraries/core/ThreadPool.cc
code/branches/consolecommands3/src/libraries/core/ThreadPool.h
code/branches/consolecommands3/src/libraries/core/XMLPort.h
code/branches/consolecommands3/src/libraries/tools/Timer.cc
code/branches/consolecommands3/src/libraries/tools/Timer.h
code/branches/consolecommands3/src/modules/overlays/hud/ChatOverlay.cc
code/branches/consolecommands3/src/orxonox/gametypes/Dynamicmatch.cc
code/branches/consolecommands3/src/orxonox/weaponsystem/Munition.cc
Log:
createExecutor() now returns a SharedPtr instead of a pointer. Adapted code that uses createExecutor() accordingly.
Modified: code/branches/consolecommands3/src/libraries/core/BaseObject.cc
===================================================================
--- code/branches/consolecommands3/src/libraries/core/BaseObject.cc 2010-08-21 20:20:09 UTC (rev 7199)
+++ code/branches/consolecommands3/src/libraries/core/BaseObject.cc 2010-08-21 22:27:53 UTC (rev 7200)
@@ -476,8 +476,8 @@
XMLPortClassObjectContainer<BaseObject, BaseObject>* container = (XMLPortClassObjectContainer<BaseObject, BaseObject>*)(identifier->getXMLPortObjectContainer(statename));
if (!container)
{
- ExecutorMember<BaseObject>* setfunctor = createExecutor(createFunctor(&BaseObject::addEventSource), std::string( "BaseObject" ) + "::" + "addEventSource" + '(' + statename + ')');
- ExecutorMember<BaseObject>* getfunctor = createExecutor(createFunctor(&BaseObject::getEventSource), std::string( "BaseObject" ) + "::" + "getEventSource" + '(' + statename + ')');
+ const ExecutorMemberPtr<BaseObject>& setfunctor = createExecutor(createFunctor(&BaseObject::addEventSource), std::string( "BaseObject" ) + "::" + "addEventSource" + '(' + statename + ')');
+ const ExecutorMemberPtr<BaseObject>& getfunctor = createExecutor(createFunctor(&BaseObject::getEventSource), std::string( "BaseObject" ) + "::" + "getEventSource" + '(' + statename + ')');
setfunctor->setDefaultValue(1, statename);
getfunctor->setDefaultValue(1, statename);
Modified: code/branches/consolecommands3/src/libraries/core/EventIncludes.h
===================================================================
--- code/branches/consolecommands3/src/libraries/core/EventIncludes.h 2010-08-21 20:20:09 UTC (rev 7199)
+++ code/branches/consolecommands3/src/libraries/core/EventIncludes.h 2010-08-21 22:27:53 UTC (rev 7200)
@@ -75,8 +75,10 @@
XMLPortEventStateIntern(xmlportevent##function, classname, statename, xmlelement, mode)
#define XMLPortEventStateIntern(name, classname, statename, xmlelement, mode) \
- static orxonox::ExecutorMember<classname>* xmlsetfunctor##name = (orxonox::ExecutorMember<classname>*)&orxonox::createExecutor(orxonox::createFunctor(&classname::addEventSource), std::string( #classname ) + "::" + "addEventSource" + '(' + statename + ')')->setDefaultValue(1, statename); \
- static orxonox::ExecutorMember<classname>* xmlgetfunctor##name = (orxonox::ExecutorMember<classname>*)&orxonox::createExecutor(orxonox::createFunctor(&classname::getEventSource), std::string( #classname ) + "::" + "getEventSource" + '(' + statename + ')')->setDefaultValue(1, statename); \
+ static orxonox::ExecutorMemberPtr<classname> xmlsetfunctor##name = orxonox::createExecutor(orxonox::createFunctor(&classname::addEventSource), std::string( #classname ) + "::" + "addEventSource" + '(' + statename + ')').cast<orxonox::ExecutorMember<classname> >(); \
+ static orxonox::ExecutorMemberPtr<classname> xmlgetfunctor##name = orxonox::createExecutor(orxonox::createFunctor(&classname::getEventSource), std::string( #classname ) + "::" + "getEventSource" + '(' + statename + ')').cast<orxonox::ExecutorMember<classname> >(); \
+ xmlsetfunctor##name->setDefaultValue(1, statename); \
+ xmlgetfunctor##name->setDefaultValue(1, statename); \
XMLPortObjectGeneric(xmlport##name, classname, orxonox::BaseObject, statename, xmlsetfunctor##name, xmlgetfunctor##name, xmlelement, mode, false, true)
Modified: code/branches/consolecommands3/src/libraries/core/Executor.cc
===================================================================
--- code/branches/consolecommands3/src/libraries/core/Executor.cc 2010-08-21 20:20:09 UTC (rev 7199)
+++ code/branches/consolecommands3/src/libraries/core/Executor.cc 2010-08-21 22:27:53 UTC (rev 7200)
@@ -190,57 +190,45 @@
}
}
- Executor& Executor::setDefaultValues(const MultiType& param1)
+ void Executor::setDefaultValues(const MultiType& param1)
{
this->defaultValue_[0] = param1;
-
- return (*this);
}
- Executor& Executor::setDefaultValues(const MultiType& param1, const MultiType& param2)
+ void Executor::setDefaultValues(const MultiType& param1, const MultiType& param2)
{
this->defaultValue_[0] = param1;
this->defaultValue_[1] = param2;
-
- return (*this);
}
- Executor& Executor::setDefaultValues(const MultiType& param1, const MultiType& param2, const MultiType& param3)
+ void Executor::setDefaultValues(const MultiType& param1, const MultiType& param2, const MultiType& param3)
{
this->defaultValue_[0] = param1;
this->defaultValue_[1] = param2;
this->defaultValue_[2] = param3;
-
- return (*this);
}
- Executor& Executor::setDefaultValues(const MultiType& param1, const MultiType& param2, const MultiType& param3, const MultiType& param4)
+ void Executor::setDefaultValues(const MultiType& param1, const MultiType& param2, const MultiType& param3, const MultiType& param4)
{
this->defaultValue_[0] = param1;
this->defaultValue_[1] = param2;
this->defaultValue_[2] = param3;
this->defaultValue_[3] = param4;
-
- return (*this);
}
- Executor& Executor::setDefaultValues(const MultiType& param1, const MultiType& param2, const MultiType& param3, const MultiType& param4, const MultiType& param5)
+ void Executor::setDefaultValues(const MultiType& param1, const MultiType& param2, const MultiType& param3, const MultiType& param4, const MultiType& param5)
{
this->defaultValue_[0] = param1;
this->defaultValue_[1] = param2;
this->defaultValue_[2] = param3;
this->defaultValue_[3] = param4;
this->defaultValue_[4] = param5;
-
- return (*this);
}
- Executor& Executor::setDefaultValue(unsigned int index, const MultiType& param)
+ void Executor::setDefaultValue(unsigned int index, const MultiType& param)
{
if (index < MAX_FUNCTOR_ARGUMENTS)
this->defaultValue_[index] = param;
-
- return (*this);
}
bool Executor::allDefaultValuesSet() const
Modified: code/branches/consolecommands3/src/libraries/core/Executor.h
===================================================================
--- code/branches/consolecommands3/src/libraries/core/Executor.h 2010-08-21 20:20:09 UTC (rev 7199)
+++ code/branches/consolecommands3/src/libraries/core/Executor.h 2010-08-21 22:27:53 UTC (rev 7200)
@@ -80,12 +80,12 @@
inline const std::string& getName() const
{ return this->name_; }
- Executor& setDefaultValues(const MultiType& param1);
- Executor& setDefaultValues(const MultiType& param1, const MultiType& param2);
- Executor& setDefaultValues(const MultiType& param1, const MultiType& param2, const MultiType& param3);
- Executor& setDefaultValues(const MultiType& param1, const MultiType& param2, const MultiType& param3, const MultiType& param4);
- Executor& setDefaultValues(const MultiType& param1, const MultiType& param2, const MultiType& param3, const MultiType& param4, const MultiType& param5);
- Executor& setDefaultValue(unsigned int index, const MultiType& param);
+ void setDefaultValues(const MultiType& param1);
+ void setDefaultValues(const MultiType& param1, const MultiType& param2);
+ void setDefaultValues(const MultiType& param1, const MultiType& param2, const MultiType& param3);
+ void setDefaultValues(const MultiType& param1, const MultiType& param2, const MultiType& param3, const MultiType& param4);
+ void setDefaultValues(const MultiType& param1, const MultiType& param2, const MultiType& param3, const MultiType& param4, const MultiType& param5);
+ void setDefaultValue(unsigned int index, const MultiType& param);
inline MultiType getDefaultValue(unsigned int index) const
{
@@ -168,7 +168,7 @@
const typename FunctorMember<T>::Objects& objects = this->functorMember_->getObjects();
this->functorMember_->setObject(object);
- const MultiType& result = Executor::parse(params, success, delimiter);
+ const MultiType& result = this->Executor::parse(params, success, delimiter);
this->functorMember_->setObjects(objects);
return result;
@@ -179,7 +179,7 @@
const typename FunctorMember<T>::Objects& objects = this->functorMember_->getObjects();
this->functorMember_->setObject(object);
- const MultiType& result = Executor::parse(params, success, delimiter);
+ const MultiType& result = this->Executor::parse(params, success, delimiter);
this->functorMember_->setObjects(objects);
return result;
@@ -189,18 +189,18 @@
FunctorMemberPtr<T> functorMember_;
};
- inline Executor* createExecutor(const FunctorPtr& functor, const std::string& name = "")
+ inline ExecutorPtr createExecutor(const FunctorPtr& functor, const std::string& name = "")
{
return new Executor(functor, name);
}
template <class T>
- inline ExecutorMember<T>* createExecutor(const FunctorMemberPtr<T>& functor, const std::string& name = "")
+ inline ExecutorMemberPtr<T> createExecutor(const FunctorMemberPtr<T>& functor, const std::string& name = "")
{
return new ExecutorMember<T>(functor, name);
}
- inline ExecutorStatic* createExecutor(const FunctorStaticPtr& functor, const std::string& name = "")
+ inline ExecutorStaticPtr createExecutor(const FunctorStaticPtr& functor, const std::string& name = "")
{
return new ExecutorStatic(functor, name);
}
Modified: code/branches/consolecommands3/src/libraries/core/Thread.cc
===================================================================
--- code/branches/consolecommands3/src/libraries/core/Thread.cc 2010-08-21 20:20:09 UTC (rev 7199)
+++ code/branches/consolecommands3/src/libraries/core/Thread.cc 2010-08-21 22:27:53 UTC (rev 7200)
@@ -74,7 +74,7 @@
return isWorking;
}
- bool Thread::evaluateExecutor( Executor* executor )
+ bool Thread::evaluateExecutor( const ExecutorPtr& executor )
{
this->isWorkingMutex_->lock();
this->isWorking_=true;
@@ -91,13 +91,12 @@
while( !stopThread )
{
//this->executorMutex_->lock();
- Executor* executor = this->executor_;
+ ExecutorPtr executor = this->executor_;
//this->executorMutex_->unlock();
if( executor )
{
(*executor)();
this->executorMutex_->lock();
- delete this->executor_;
this->executor_ = 0;
this->executorMutex_->unlock();
this->isWorkingMutex_->lock();
Modified: code/branches/consolecommands3/src/libraries/core/Thread.h
===================================================================
--- code/branches/consolecommands3/src/libraries/core/Thread.h 2010-08-21 20:20:09 UTC (rev 7199)
+++ code/branches/consolecommands3/src/libraries/core/Thread.h 2010-08-21 22:27:53 UTC (rev 7200)
@@ -45,17 +45,17 @@
bool isWorking();
void waitUntilFinished();
- bool evaluateExecutor( Executor* executor );
+ bool evaluateExecutor( const ExecutorPtr& executor );
private:
void threadLoop();
- Executor* executor_;
+ ExecutorPtr executor_;
bool isWorking_;
bool stopThread_;
boost::thread* workerThread_;
boost::mutex* executorMutex_;
- boost::mutex* isWorkingMutex_;
+ boost::mutex* isWorkingMutex_;
boost::mutex* stopThreadMutex_;
};
Modified: code/branches/consolecommands3/src/libraries/core/ThreadPool.cc
===================================================================
--- code/branches/consolecommands3/src/libraries/core/ThreadPool.cc 2010-08-21 20:20:09 UTC (rev 7199)
+++ code/branches/consolecommands3/src/libraries/core/ThreadPool.cc 2010-08-21 22:27:53 UTC (rev 7200)
@@ -80,7 +80,7 @@
}
}
- bool ThreadPool::passFunction( Executor* executor, bool addThread )
+ bool ThreadPool::passFunction( const ExecutorPtr& executor, bool addThread )
{
std::vector<Thread*>::iterator it;
for ( it=this->threadPool_.begin(); it!=this->threadPool_.end(); ++it )
Modified: code/branches/consolecommands3/src/libraries/core/ThreadPool.h
===================================================================
--- code/branches/consolecommands3/src/libraries/core/ThreadPool.h 2010-08-21 20:20:09 UTC (rev 7199)
+++ code/branches/consolecommands3/src/libraries/core/ThreadPool.h 2010-08-21 22:27:53 UTC (rev 7200)
@@ -45,7 +45,7 @@
unsigned int removeThreads( unsigned int nr );
unsigned int setNrOfThreads( unsigned int nr );
- bool passFunction( Executor* executor, bool addThread=false );
+ bool passFunction( const ExecutorPtr& executor, bool addThread=false );
void synchronise();
private:
Modified: code/branches/consolecommands3/src/libraries/core/XMLPort.h
===================================================================
--- code/branches/consolecommands3/src/libraries/core/XMLPort.h 2010-08-21 20:20:09 UTC (rev 7199)
+++ code/branches/consolecommands3/src/libraries/core/XMLPort.h 2010-08-21 22:27:53 UTC (rev 7200)
@@ -74,8 +74,8 @@
write an existing value to an XML file).
*/
#define XMLPortParam(classname, paramname, loadfunction, savefunction, xmlelement, mode) \
- static ExecutorMember<classname>* xmlcontainer##loadfunction##savefunction##loadexecutor = orxonox::createExecutor(orxonox::createFunctor(&classname::loadfunction), std::string( #classname ) + "::" + #loadfunction); \
- static ExecutorMember<classname>* xmlcontainer##loadfunction##savefunction##saveexecutor = orxonox::createExecutor(orxonox::createFunctor(&classname::savefunction), std::string( #classname ) + "::" + #savefunction); \
+ static ExecutorMemberPtr<classname> xmlcontainer##loadfunction##savefunction##loadexecutor = orxonox::createExecutor(orxonox::createFunctor(&classname::loadfunction), std::string( #classname ) + "::" + #loadfunction); \
+ static ExecutorMemberPtr<classname> xmlcontainer##loadfunction##savefunction##saveexecutor = orxonox::createExecutor(orxonox::createFunctor(&classname::savefunction), std::string( #classname ) + "::" + #savefunction); \
XMLPortParamGeneric(xmlcontainer##loadfunction##savefunction, classname, classname, this, paramname, xmlcontainer##loadfunction##savefunction##loadexecutor, xmlcontainer##loadfunction##savefunction##saveexecutor, xmlelement, mode)
/**
@@ -93,8 +93,8 @@
*/
#define XMLPortParamVariable(classname, paramname, variable, xmlelement, mode) \
XMLPortVariableHelperClass xmlcontainer##variable##dummy(static_cast<void*>(&variable)); \
- static ExecutorMember<orxonox::XMLPortVariableHelperClass>* xmlcontainer##variable##loadexecutor = static_cast<ExecutorMember<orxonox::XMLPortVariableHelperClass>*>(orxonox::createExecutor(orxonox::createFunctor(orxonox::XMLPortVariableHelperClass::getLoader(variable)), std::string( #classname ) + "::" + #variable + "loader")); \
- static ExecutorMember<orxonox::XMLPortVariableHelperClass>* xmlcontainer##variable##saveexecutor = static_cast<ExecutorMember<orxonox::XMLPortVariableHelperClass>*>(orxonox::createExecutor(orxonox::createFunctor(orxonox::XMLPortVariableHelperClass::getSaver (variable)), std::string( #classname ) + "::" + #variable + "saver" )); \
+ static ExecutorMemberPtr<orxonox::XMLPortVariableHelperClass> xmlcontainer##variable##loadexecutor = orxonox::createExecutor(orxonox::createFunctor(orxonox::XMLPortVariableHelperClass::getLoader(variable)), std::string( #classname ) + "::" + #variable + "loader"); \
+ static ExecutorMemberPtr<orxonox::XMLPortVariableHelperClass> xmlcontainer##variable##saveexecutor = orxonox::createExecutor(orxonox::createFunctor(orxonox::XMLPortVariableHelperClass::getSaver (variable)), std::string( #classname ) + "::" + #variable + "saver" ); \
XMLPortParamGeneric(xmlcontainer##variable, classname, orxonox::XMLPortVariableHelperClass, &xmlcontainer##variable##dummy, paramname, xmlcontainer##variable##loadexecutor, xmlcontainer##variable##saveexecutor, xmlelement, mode)
/**
@@ -109,8 +109,8 @@
You don't have to use this, if there exist only one function with the given name.
*/
#define XMLPortParamTemplate(classname, paramname, loadfunction, savefunction, xmlelement, mode, ...) \
- static ExecutorMember<classname>* xmlcontainer##loadfunction##savefunction##loadexecutor = orxonox::createExecutor(orxonox::createFunctor<classname, __VA_ARGS__ >(&classname::loadfunction), std::string( #classname ) + "::" + #loadfunction); \
- static ExecutorMember<classname>* xmlcontainer##loadfunction##savefunction##saveexecutor = orxonox::createExecutor(orxonox::createFunctor(&classname::savefunction), std::string( #classname ) + "::" + #savefunction); \
+ static ExecutorMemberPtr<classname> xmlcontainer##loadfunction##savefunction##loadexecutor = orxonox::createExecutor(orxonox::createFunctor<classname, __VA_ARGS__ >(&classname::loadfunction), std::string( #classname ) + "::" + #loadfunction); \
+ static ExecutorMemberPtr<classname> xmlcontainer##loadfunction##savefunction##saveexecutor = orxonox::createExecutor(orxonox::createFunctor(&classname::savefunction), std::string( #classname ) + "::" + #savefunction); \
XMLPortParamGeneric(xmlcontainer##loadfunction##savefunction, classname, classname, this, paramname, xmlcontainer##loadfunction##savefunction##loadexecutor, xmlcontainer##loadfunction##savefunction##saveexecutor, xmlelement, mode)
// --------------------
@@ -128,13 +128,13 @@
When saving the object, only one of both options has to be saved; this is, where this macro helps.
*/
#define XMLPortParamLoadOnly(classname, paramname, loadfunction, xmlelement, mode) \
- static ExecutorMember<classname>* xmlcontainer##loadfunction##0##loadexecutor = orxonox::createExecutor(orxonox::createFunctor(&classname::loadfunction), std::string( #classname ) + "::" + #loadfunction); \
+ static ExecutorMemberPtr<classname> xmlcontainer##loadfunction##0##loadexecutor = orxonox::createExecutor(orxonox::createFunctor(&classname::loadfunction), std::string( #classname ) + "::" + #loadfunction); \
XMLPortParamGeneric(xmlcontainer##loadfunction##0, classname, classname, this, paramname, xmlcontainer##loadfunction##0##loadexecutor, 0, xmlelement, mode)
/**
@brief This is the same as XMLPortParamTemplate, but for load-only attributes (see XMLPortParamLoadOnly).
*/
#define XMLPortParamLoadOnlyTemplate(classname, paramname, loadfunction, xmlelement, mode, ...) \
- static ExecutorMember<classname>* xmlcontainer##loadfunction##0##loadexecutor = orxonox::createExecutor(orxonox::createFunctor<classname, __VA_ARGS__ >(&classname::loadfunction), std::string( #classname ) + "::" + #loadfunction); \
+ static ExecutorMemberPtr<classname> xmlcontainer##loadfunction##0##loadexecutor = orxonox::createExecutor(orxonox::createFunctor<classname, __VA_ARGS__ >(&classname::loadfunction), std::string( #classname ) + "::" + #loadfunction); \
XMLPortParamGeneric(xmlcontainer##loadfunction##0, classname, classname, this, paramname, xmlcontainer##loadfunction##0##loadexecutor, 0, xmlelement, mode)
// ------------------
@@ -160,15 +160,15 @@
> XMLPortParamExtern(SpaceShip, Pilot, myPilot_, "pilotname", setName, getName, xmlelement, mode);
*/
#define XMLPortParamExtern(classname, externclass, object, paramname, loadfunction, savefunction, xmlelement, mode) \
- static ExecutorMember<externclass>* xmlcontainer##loadfunction##savefunction##loadexecutor = orxonox::createExecutor(orxonox::createFunctor(&externclass::loadfunction), std::string( #externclass ) + "::" + #loadfunction); \
- static ExecutorMember<externclass>* xmlcontainer##loadfunction##savefunction##saveexecutor = orxonox::createExecutor(orxonox::createFunctor(&externclass::savefunction), std::string( #externclass ) + "::" + #savefunction); \
+ static ExecutorMemberPtr<externclass> xmlcontainer##loadfunction##savefunction##loadexecutor = orxonox::createExecutor(orxonox::createFunctor(&externclass::loadfunction), std::string( #externclass ) + "::" + #loadfunction); \
+ static ExecutorMemberPtr<externclass> xmlcontainer##loadfunction##savefunction##saveexecutor = orxonox::createExecutor(orxonox::createFunctor(&externclass::savefunction), std::string( #externclass ) + "::" + #savefunction); \
XMLPortParamGeneric(xmlcontainer##loadfunction##savefunction, classname, externclass, object, paramname, xmlcontainer##loadfunction##savefunction##loadexecutor, xmlcontainer##loadfunction##savefunction##saveexecutor, xmlelement, mode);
/**
@brief This is the same as XMLPortParamTemplate, but for extern attributes (see XMLPortParamExtern).
*/
#define XMLPortParamExternTemplate(classname, externclass, object, paramname, loadfunction, savefunction, xmlelement, mode, ...) \
- static ExecutorMember<externclass>* xmlcontainer##loadfunction##savefunction##loadexecutor = orxonox::createExecutor(orxonox::createFunctor<externclass, __VA_ARGS__ >(&externclass::loadfunction), std::string( #externclass ) + "::" + #loadfunction); \
- static ExecutorMember<externclass>* xmlcontainer##loadfunction##savefunction##saveexecutor = orxonox::createExecutor(orxonox::createFunctor(&externclass::savefunction), std::string( #externclass ) + "::" + #savefunction); \
+ static ExecutorMemberPtr<externclass> xmlcontainer##loadfunction##savefunction##loadexecutor = orxonox::createExecutor(orxonox::createFunctor<externclass, __VA_ARGS__ >(&externclass::loadfunction), std::string( #externclass ) + "::" + #loadfunction); \
+ static ExecutorMemberPtr<externclass> xmlcontainer##loadfunction##savefunction##saveexecutor = orxonox::createExecutor(orxonox::createFunctor(&externclass::savefunction), std::string( #externclass ) + "::" + #savefunction); \
XMLPortParamGeneric(xmlcontainer##loadfunction##savefunction, classname, externclass, object, paramname, xmlcontainer##loadfunction##savefunction##loadexecutor, xmlcontainer##loadfunction##savefunction##saveexecutor, xmlelement, mode);
// -------------------
@@ -248,15 +248,15 @@
empty string). Then you can add sub-objects directly into the mainclass.
*/
#define XMLPortObjectExtended(classname, objectclass, sectionname, loadfunction, savefunction, xmlelement, mode, bApplyLoaderMask, bLoadBefore) \
- static ExecutorMember<classname>* xmlcontainer##loadfunction##savefunction##loadexecutor = orxonox::createExecutor(orxonox::createFunctor(&classname::loadfunction), std::string( #classname ) + "::" + #loadfunction); \
- static ExecutorMember<classname>* xmlcontainer##loadfunction##savefunction##saveexecutor = orxonox::createExecutor(orxonox::createFunctor(&classname::savefunction), std::string( #classname ) + "::" + #savefunction); \
+ static ExecutorMemberPtr<classname> xmlcontainer##loadfunction##savefunction##loadexecutor = orxonox::createExecutor(orxonox::createFunctor(&classname::loadfunction), std::string( #classname ) + "::" + #loadfunction); \
+ static ExecutorMemberPtr<classname> xmlcontainer##loadfunction##savefunction##saveexecutor = orxonox::createExecutor(orxonox::createFunctor(&classname::savefunction), std::string( #classname ) + "::" + #savefunction); \
XMLPortObjectGeneric(xmlcontainer##loadfunction##savefunction, classname, objectclass, sectionname, xmlcontainer##loadfunction##savefunction##loadexecutor, xmlcontainer##loadfunction##savefunction##saveexecutor, xmlelement, mode, bApplyLoaderMask, bLoadBefore)
/**
@brief This is the same as XMLPortObjectExtended, but you can specify the loadfunction by adding the param types. See XMLPortParamTemplate for more details about the types.
*/
#define XMLPortObjectExtendedTemplate(classname, objectclass, sectionname, loadfunction, savefunction, xmlelement, mode, bApplyLoaderMask, bLoadBefore, ...) \
- static ExecutorMember<classname>* xmlcontainer##loadfunction##savefunction##loadexecutor = orxonox::createExecutor(orxonox::createFunctor<classname, __VA_ARGS__ >(&classname::loadfunction), std::string( #classname ) + "::" + #loadfunction); \
- static ExecutorMember<classname>* xmlcontainer##loadfunction##savefunction##saveexecutor = orxonox::createExecutor(orxonox::createFunctor(&classname::savefunction), std::string( #classname ) + "::" + #savefunction); \
+ static ExecutorMemberPtr<classname> xmlcontainer##loadfunction##savefunction##loadexecutor = orxonox::createExecutor(orxonox::createFunctor<classname, __VA_ARGS__ >(&classname::loadfunction), std::string( #classname ) + "::" + #loadfunction); \
+ static ExecutorMemberPtr<classname> xmlcontainer##loadfunction##savefunction##saveexecutor = orxonox::createExecutor(orxonox::createFunctor(&classname::savefunction), std::string( #classname ) + "::" + #savefunction); \
XMLPortObjectGeneric(xmlcontainer##loadfunction##savefunction, classname, objectclass, sectionname, xmlcontainer##loadfunction##savefunction##loadexecutor, xmlcontainer##loadfunction##savefunction##saveexecutor, xmlelement, mode, bApplyLoaderMask, bLoadBefore)
// -------------
@@ -266,15 +266,15 @@
@brief This is the same as XMLPortObjectExtended, but bApplyLoaderMask is false and bLoadBefore is true by default.
*/
#define XMLPortObject(classname, objectclass, sectionname, loadfunction, savefunction, xmlelement, mode) \
- static ExecutorMember<classname>* xmlcontainer##loadfunction##savefunction##loadexecutor = orxonox::createExecutor(orxonox::createFunctor(&classname::loadfunction), std::string( #classname ) + "::" + #loadfunction); \
- static ExecutorMember<classname>* xmlcontainer##loadfunction##savefunction##saveexecutor = orxonox::createExecutor(orxonox::createFunctor(&classname::savefunction), std::string( #classname ) + "::" + #savefunction); \
+ static ExecutorMemberPtr<classname> xmlcontainer##loadfunction##savefunction##loadexecutor = orxonox::createExecutor(orxonox::createFunctor(&classname::loadfunction), std::string( #classname ) + "::" + #loadfunction); \
+ static ExecutorMemberPtr<classname> xmlcontainer##loadfunction##savefunction##saveexecutor = orxonox::createExecutor(orxonox::createFunctor(&classname::savefunction), std::string( #classname ) + "::" + #savefunction); \
XMLPortObjectGeneric(xmlcontainer##loadfunction##savefunction, classname, objectclass, sectionname, xmlcontainer##loadfunction##savefunction##loadexecutor, xmlcontainer##loadfunction##savefunction##saveexecutor, xmlelement, mode, false, true)
/**
@brief This is the same as XMLPortObject, but you can specify the loadfunction by adding the param types. See XMLPortParamTemplate for more details about the types.
*/
#define XMLPortObjectTemplate(classname, objectclass, sectionname, loadfunction, savefunction, xmlelement, mode, ...) \
- static ExecutorMember<classname>* xmlcontainer##loadfunction##savefunction##loadexecutor = orxonox::createExecutor(orxonox::createFunctor<classname, __VA_ARGS__ >(&classname::loadfunction), std::string( #classname ) + "::" + #loadfunction); \
- static ExecutorMember<classname>* xmlcontainer##loadfunction##savefunction##saveexecutor = orxonox::createExecutor(orxonox::createFunctor(&classname::savefunction), std::string( #classname ) + "::" + #savefunction); \
+ static ExecutorMemberPtr<classname> xmlcontainer##loadfunction##savefunction##loadexecutor = orxonox::createExecutor(orxonox::createFunctor<classname, __VA_ARGS__ >(&classname::loadfunction), std::string( #classname ) + "::" + #loadfunction); \
+ static ExecutorMemberPtr<classname> xmlcontainer##loadfunction##savefunction##saveexecutor = orxonox::createExecutor(orxonox::createFunctor(&classname::savefunction), std::string( #classname ) + "::" + #savefunction); \
XMLPortObjectGeneric(xmlcontainer##loadfunction##savefunction, classname, objectclass, sectionname, xmlcontainer##loadfunction##savefunction##loadexecutor, xmlcontainer##loadfunction##savefunction##saveexecutor, xmlelement, mode, false, true)
// --------------------
@@ -347,7 +347,7 @@
};
public:
- XMLPortClassParamContainer(const std::string& paramname, Identifier* identifier, ExecutorMember<T>* loadexecutor, ExecutorMember<T>* saveexecutor)
+ XMLPortClassParamContainer(const std::string& paramname, Identifier* identifier, const ExecutorMemberPtr<T>& loadexecutor, const ExecutorMemberPtr<T>& saveexecutor)
{
this->paramname_ = paramname;
this->identifier_ = identifier;
@@ -357,10 +357,6 @@
~XMLPortClassParamContainer()
{
- assert(this->loadexecutor_);
- delete this->loadexecutor_;
- if (this->saveexecutor_)
- delete this->saveexecutor_;
}
XMLPortParamContainer& port(BaseObject* owner, T* object, Element& xmlelement, XMLPort::Mode mode)
@@ -478,8 +474,8 @@
}
private:
- ExecutorMember<T>* loadexecutor_;
- ExecutorMember<T>* saveexecutor_;
+ ExecutorMemberPtr<T> loadexecutor_;
+ ExecutorMemberPtr<T> saveexecutor_;
ParseParams parseParams_;
};
@@ -521,7 +517,7 @@
class XMLPortClassObjectContainer : public XMLPortObjectContainer
{
public:
- XMLPortClassObjectContainer(const std::string& sectionname, Identifier* identifier, ExecutorMember<T>* loadexecutor, ExecutorMember<T>* saveexecutor, bool bApplyLoaderMask, bool bLoadBefore)
+ XMLPortClassObjectContainer(const std::string& sectionname, Identifier* identifier, const ExecutorMemberPtr<T>& loadexecutor, const ExecutorMemberPtr<T>& saveexecutor, bool bApplyLoaderMask, bool bLoadBefore)
{
this->sectionname_ = sectionname;
this->identifier_ = identifier;
@@ -535,10 +531,6 @@
~XMLPortClassObjectContainer()
{
- assert(this->loadexecutor_);
- delete this->loadexecutor_;
- if (this->saveexecutor_)
- delete this->saveexecutor_;
}
void callLoadExecutor(BaseObject* object, BaseObject* newObject)
@@ -552,8 +544,8 @@
}
private:
- ExecutorMember<T>* loadexecutor_;
- ExecutorMember<T>* saveexecutor_;
+ ExecutorMemberPtr<T> loadexecutor_;
+ ExecutorMemberPtr<T> saveexecutor_;
};
Modified: code/branches/consolecommands3/src/libraries/tools/Timer.cc
===================================================================
--- code/branches/consolecommands3/src/libraries/tools/Timer.cc 2010-08-21 20:20:09 UTC (rev 7199)
+++ code/branches/consolecommands3/src/libraries/tools/Timer.cc 2010-08-21 22:27:53 UTC (rev 7200)
@@ -53,7 +53,7 @@
Timer* delaytimer = new Timer();
delaytimerset.insert(delaytimer);
- ExecutorStatic* delayexecutor = createExecutor(createFunctor(&executeDelayedCommand));
+ const ExecutorStaticPtr& delayexecutor = createExecutor(createFunctor(&executeDelayedCommand));
delayexecutor->setDefaultValues(delaytimer, command);
delaytimer->setTimer(delay, false, delayexecutor);
}
@@ -96,7 +96,7 @@
@param bLoop If true, the function gets called every 'interval' seconds
@param exeuctor A executor of the function to call
*/
- Timer::Timer(float interval, bool bLoop, Executor* executor, bool bKillAfterCall)
+ Timer::Timer(float interval, bool bLoop, const ExecutorPtr& executor, bool bKillAfterCall)
{
this->init();
RegisterObject(Timer);
@@ -105,14 +105,6 @@
}
/**
- @brief Deletes the executor.
- */
- Timer::~Timer()
- {
- this->deleteExecutor();
- }
-
- /**
@brief Initializes the Timer
*/
void Timer::init()
@@ -140,15 +132,6 @@
}
/**
- @brief Deletes the executor.
- */
- void Timer::deleteExecutor()
- {
- if (this->executor_)
- delete this->executor_;
- }
-
- /**
@brief Updates the timer before the frames are rendered.
*/
void Timer::tick(const Clock& time)
Modified: code/branches/consolecommands3/src/libraries/tools/Timer.h
===================================================================
--- code/branches/consolecommands3/src/libraries/tools/Timer.h 2010-08-21 20:20:09 UTC (rev 7199)
+++ code/branches/consolecommands3/src/libraries/tools/Timer.h 2010-08-21 22:27:53 UTC (rev 7200)
@@ -77,9 +77,8 @@
{
public:
Timer();
- ~Timer();
- Timer(float interval, bool bLoop, Executor* executor, bool bKillAfterCall = false);
+ Timer(float interval, bool bLoop, const ExecutorPtr& executor, bool bKillAfterCall = false);
/**
@brief Initializes the Timer with given values.
@@ -88,10 +87,8 @@
@param object The object owning the timer and the function
@param executor A executor of the function to call
*/
- void setTimer(float interval, bool bLoop, Executor* executor, bool bKillAfterCall = false)
+ void setTimer(float interval, bool bLoop, const ExecutorPtr& executor, bool bKillAfterCall = false)
{
- this->deleteExecutor();
-
this->setInterval(interval);
this->bLoop_ = bLoop;
this->executor_ = executor;
@@ -102,7 +99,6 @@
}
void run();
- void deleteExecutor();
/** @brief Starts the Timer: Function-call after 'interval' seconds. */
inline void startTimer()
@@ -140,14 +136,14 @@
private:
void init();
- Executor* executor_; //!< The executor of the function that should be called when the time expires
+ ExecutorPtr executor_; //!< The executor of the function that should be called when the time expires
- long long interval_; //!< The time-interval in micro seconds
- bool bLoop_; //!< If true, the function gets called every 'interval' seconds
- bool bActive_; //!< If true, the Timer ticks and calls the function if the time's up
- bool bKillAfterCall_; //!< If true the timer gets deleted after it called the function
+ long long interval_; //!< The time-interval in micro seconds
+ bool bLoop_; //!< If true, the function gets called every 'interval' seconds
+ bool bActive_; //!< If true, the Timer ticks and calls the function if the time's up
+ bool bKillAfterCall_; //!< If true the timer gets deleted after it called the function
- long long time_; //!< Internal variable, counting the time till the next function-call
+ long long time_; //!< Internal variable, counting the time till the next function-call
};
}
Modified: code/branches/consolecommands3/src/modules/overlays/hud/ChatOverlay.cc
===================================================================
--- code/branches/consolecommands3/src/modules/overlays/hud/ChatOverlay.cc 2010-08-21 20:20:09 UTC (rev 7199)
+++ code/branches/consolecommands3/src/modules/overlays/hud/ChatOverlay.cc 2010-08-21 22:27:53 UTC (rev 7200)
@@ -90,7 +90,7 @@
Timer* timer = new Timer();
this->timers_.insert(timer); // store the timer in a set to destroy it in the destructor
- Executor* executor = createExecutor(createFunctor(&ChatOverlay::dropMessage, this));
+ const ExecutorPtr& executor = createExecutor(createFunctor(&ChatOverlay::dropMessage, this));
executor->setDefaultValues(timer);
timer->setTimer(this->displayTime_, false, executor, true);
Modified: code/branches/consolecommands3/src/orxonox/gametypes/Dynamicmatch.cc
===================================================================
--- code/branches/consolecommands3/src/orxonox/gametypes/Dynamicmatch.cc 2010-08-21 20:20:09 UTC (rev 7199)
+++ code/branches/consolecommands3/src/orxonox/gametypes/Dynamicmatch.cc 2010-08-21 22:27:53 UTC (rev 7200)
@@ -154,7 +154,9 @@
{
spaceship->getEngine()->setSpeedFactor(5);
WeakPtr<Engine>* ptr = new WeakPtr<Engine>(spaceship->getEngine());
- new Timer(10, false, &createExecutor(createFunctor(&Dynamicmatch::resetSpeedFactor, this))->setDefaultValue(0, ptr), true);
+ ExecutorPtr executor = createExecutor(createFunctor(&Dynamicmatch::resetSpeedFactor, this));
+ executor->setDefaultValue(0, ptr);
+ new Timer(10, false, executor, true);
}
}
@@ -253,7 +255,9 @@
{
spaceship->getEngine()->setSpeedFactor(5);
WeakPtr<Engine>* ptr = new WeakPtr<Engine>(spaceship->getEngine());
- new Timer(10, false, &createExecutor(createFunctor(&Dynamicmatch::resetSpeedFactor, this))->setDefaultValue(0, ptr), true);
+ ExecutorPtr executor = createExecutor(createFunctor(&Dynamicmatch::resetSpeedFactor, this));
+ executor->setDefaultValue(0, ptr);
+ new Timer(10, false, executor, true);
}
}
Modified: code/branches/consolecommands3/src/orxonox/weaponsystem/Munition.cc
===================================================================
--- code/branches/consolecommands3/src/orxonox/weaponsystem/Munition.cc 2010-08-21 20:20:09 UTC (rev 7199)
+++ code/branches/consolecommands3/src/orxonox/weaponsystem/Munition.cc 2010-08-21 22:27:53 UTC (rev 7200)
@@ -460,7 +460,7 @@
if (bUseReloadTime && (munition->reloadTime_ > 0 || munition->bStackMunition_))
{
- Executor* executor = createExecutor(createFunctor(&Magazine::loaded, this));
+ const ExecutorPtr& executor = createExecutor(createFunctor(&Magazine::loaded, this));
executor->setDefaultValues(munition);
this->loadTimer_.setTimer(munition->reloadTime_, false, executor);
More information about the Orxonox-commit
mailing list