26#ifndef _mtsCommandWrite_h
27#define _mtsCommandWrite_h
40template <
class _
classType,
class _argumentType>
51 typedef mtsCommandWrite<ClassType, ArgumentType>
ThisType;
69 template<
bool,
typename dummy=
void>
79 (ClassInst->*
Action)(*data);
83 template<
typename dummy>
93 (ClassInst->*
Action)(*data);
97 typedef typename ArgumentType::RefType ArgumentRefType;
98 const ArgumentRefType *dataref =
dynamic_cast<const ArgumentRefType *
>(&argument);
100 CMN_LOG_INIT_ERROR <<
"Write CallMethod could not cast from " <<
typeid(argument).name()
101 <<
" to const " <<
typeid(ArgumentRefType).name() << std::endl;
106 temp.Assign(*dataref);
107 (ClassInst->*
Action)(temp);
148 return ConditionalCast<cmnIsDerivedFromTemplated<ArgumentType, mtsGenericObjectProxy>::IS_DERIVED
166 return Execute(argument, blocking);
170 virtual void ToStream(std::ostream & outputStream)
const {
171 outputStream <<
"mtsCommandWrite: ";
172 if (this->ClassInstantiation) {
174 <<
mtsObjectName(this->ClassInstantiation) <<
"\" currently "
175 << (this->
IsEnabled() ?
"enabled" :
"disabled");
177 outputStream <<
"Not initialized properly";
188template <
class _
classType>
198 typedef mtsCommandWriteGeneric<ClassType>
ThisType;
218 mtsCommandWriteGeneric(
void):
BaseType() {}
234 if (argumentPrototype) {
268 return Execute(argument, blocking);
273 outputStream <<
"mtsCommandWriteGeneric: ";
274 if (this->ClassInstantiation) {
275 outputStream << this->
Name <<
"(const mtsGenericObject *) using class/object \""
276 <<
mtsObjectName(this->ClassInstantiation) <<
"\" currently "
277 << (this->
IsEnabled() ?
"enabled" :
"disabled");
279 outputStream <<
"Not initialized properly";
const std::string & GetName(void) const
virtual cmnGenericObject * Create(void) const =0
Base class for high level objects.
Definition cmnGenericObject.h:53
virtual const cmnClassServicesBase * Services(void) const =0
std::string Name
Definition mtsCommandBase.h:52
bool IsEnabled(void) const
Definition mtsCommandBase.h:105
static mtsExecutionResult CallMethod(ClassType *ClassInst, ActionType Action, const mtsGenericObject &argument)
Definition mtsCommandWrite.h:88
Definition mtsCommandWrite.h:70
static mtsExecutionResult CallMethod(ClassType *ClassInst, ActionType Action, const mtsGenericObject &argument)
Definition mtsCommandWrite.h:73
mtsCommandWriteBase(void)
Definition mtsCommandWriteBase.h:49
const mtsGenericObject * ArgumentPrototype
Definition mtsCommandWriteBase.h:109
mtsExecutionResult Execute(const mtsGenericObject &argument, mtsBlockingType CMN_UNUSED(blocking))
Definition mtsCommandWrite.h:257
void(ClassType::*) ActionType(const mtsGenericObject &)
Definition mtsCommandWrite.h:202
void ToStream(std::ostream &outputStream) const
Definition mtsCommandWrite.h:272
mtsCommandWriteGeneric(ActionType action, ClassType *classInstantiation, const std::string &name, const mtsGenericObject *argumentPrototype)
Definition mtsCommandWrite.h:227
mtsExecutionResult Execute(const mtsGenericObject &argument, mtsBlockingType blocking, mtsCommandWriteBase *CMN_UNUSED(finishedEventHandler))
Definition mtsCommandWrite.h:266
virtual ~mtsCommandWriteGeneric()
Definition mtsCommandWrite.h:246
ClassType * ClassInstantiation
Definition mtsCommandWrite.h:214
mtsCommandWriteBase BaseType
Definition mtsCommandWrite.h:192
_classType ClassType
Definition mtsCommandWrite.h:195
ActionType Action
Definition mtsCommandWrite.h:211
mtsCommandWriteGeneric< ClassType > ThisType
Definition mtsCommandWrite.h:198
Definition mtsCommandWrite.h:41
void(ClassType::*) ActionType(const ArgumentType &)
Definition mtsCommandWrite.h:55
virtual void ToStream(std::ostream &outputStream) const
Definition mtsCommandWrite.h:170
mtsExecutionResult Execute(const mtsGenericObject &argument, mtsBlockingType blocking, mtsCommandWriteBase *CMN_UNUSED(finishedEventHandler))
Definition mtsCommandWrite.h:164
mtsExecutionResult Execute(const ArgumentType &argument, mtsBlockingType CMN_UNUSED(blocking))
Definition mtsCommandWrite.h:155
mtsCommandWriteBase BaseType
Definition mtsCommandWrite.h:45
mtsCommandWrite< ClassType, ArgumentType > ThisType
Definition mtsCommandWrite.h:51
_argumentType ArgumentType
Definition mtsCommandWrite.h:44
virtual ~mtsCommandWrite()
Definition mtsCommandWrite.h:134
ClassType * ClassInstantiation
Definition mtsCommandWrite.h:67
mtsCommandWrite(ActionType action, ClassType *classInstantiation, const std::string &name, const ArgumentType &argumentPrototype)
Definition mtsCommandWrite.h:123
_classType ClassType
Definition mtsCommandWrite.h:48
mtsExecutionResult Execute(const mtsGenericObject &argument, mtsBlockingType CMN_UNUSED(blocking))
Definition mtsCommandWrite.h:145
ActionType Action
Definition mtsCommandWrite.h:64
Definition mtsExecutionResult.h:34
@ INVALID_INPUT_TYPE
Definition mtsExecutionResult.h:44
@ COMMAND_SUCCEEDED
Definition mtsExecutionResult.h:44
@ COMMAND_DISABLED
Definition mtsExecutionResult.h:44
Base class for data object in cisstMultiTask.
Definition mtsGenericObject.h:52
static T * CastArg(mtsGenericObject &arg)
Definition mtsGenericObjectProxy.h:700
static mtsGenericObject * ConditionalCreate(const T &arg, const std::string &name)
Definition mtsGenericObjectProxy.h:691
#define CMN_ASSERT(expr)
Definition cmnAssert.h:97
#define CMN_LOG_INIT_ERROR
Definition cmnLogger.h:162
#define CMN_UNUSED(argument)
Definition cmnPortability.h:497
Defines a base class for a command with one argument.
std::string mtsObjectName(const mtsComponent *object)
Definition mtsComponent.h:588
mtsBlockingType
Definition mtsForwardDeclarations.h:54
vctDynamicNArrayBase< vctDynamicNArrayOwner< _elementType, _dimension >, _elementType, _dimension > BaseType
Definition vctDynamicNArray.h:133