26#ifndef _mtsCallableQualifiedReadMethod_h
27#define _mtsCallableQualifiedReadMethod_h
39template <
class _
classType,
class _argumentType,
class _resultType>
51 typedef mtsCallableQualifiedReadMethod<ClassType, ArgumentType, ResultType>
ThisType;
69 template <
bool a,
bool b,
typename dummy =
void>
83 if ( (classInstantiation->*action)(*data1, *data2) ) {
90 template <
typename dummy>
101 typedef typename ArgumentType::RefType ArgumentRefType;
102 const ArgumentRefType * data1ref =
dynamic_cast<const ArgumentRefType *
>(&argument);
104 CMN_LOG_INIT_ERROR <<
"Class mtsCallableQualifiedReadMethod: CallMethod could not cast argument from " <<
typeid(argument).name()
105 <<
" to const " <<
typeid(ArgumentRefType).name() << std::endl;
115 if ( (classInstantiation->*action)(*data1, *data2) ) {
122 template <
typename dummy>
136 typedef typename ResultType::RefType ResultRefType;
137 ResultRefType * data2ref = 0;
139 data2ref =
dynamic_cast<ResultRefType *
>(&result);
141 CMN_LOG_INIT_ERROR <<
"Class mtsCallableQualifiedReadMethod: CallMethod could not cast result from " <<
typeid(result).name()
142 <<
" to const " <<
typeid(ResultRefType).name() << std::endl;
147 if ( (classInstantiation->*action)(*data1, *data2) ) {
157 template <
typename dummy>
168 typedef typename ArgumentType::RefType ArgumentRefType;
169 const ArgumentRefType * data1ref =
dynamic_cast<const ArgumentRefType *
>(&argument);
171 CMN_LOG_INIT_ERROR <<
"Class mtsCallableQualifiedReadMethod: CallMethod could not cast argument from " <<
typeid(argument).name()
172 <<
" to const " <<
typeid(ArgumentRefType).name() << std::endl;
182 typedef typename ResultType::RefType ResultRefType;
183 ResultRefType * data2ref = 0;
185 data2ref =
dynamic_cast<ResultRefType *
>(&result);
187 CMN_LOG_INIT_ERROR <<
"Class mtsCallableQualifiedReadMethod: CallMethod could not cast result from " <<
typeid(result).name()
188 <<
" to const " <<
typeid(ResultRefType).name() << std::endl;
193 if ( (classInstantiation->*action)(*data1, *data2) ) {
224 return ConditionalCast<cmnIsDerivedFromTemplated<ArgumentType, mtsGenericObjectProxy>::IS_DERIVED,
231 if (this->ClassInstantiation) {
232 outputStream <<
"method based callable qualified read object using class/object \""
235 outputStream <<
"invalid method based callable object";
243template <
class _
classType>
253 typedef mtsCallableQualifiedReadMethodGeneric<ClassType>
ThisType;
299 if (this->ClassInstantiation) {
300 outputStream <<
"generic method based callable qualified read object using class/object \""
303 outputStream <<
"invalid generic method based callable object";
@ IS_DERIVED
Definition cmnTypeTraits.h:648
mtsCallableQualifiedReadBase(void)
Definition mtsCallableQualifiedReadBase.h:45
static mtsExecutionResult CallMethod(ClassType *classInstantiation, ActionType action, const mtsGenericObject &argument, mtsGenericObject &result)
Definition mtsCallableQualifiedReadMethod.h:125
static mtsExecutionResult CallMethod(ClassType *classInstantiation, ActionType action, const mtsGenericObject &argument, mtsGenericObject &result)
Definition mtsCallableQualifiedReadMethod.h:93
static mtsExecutionResult CallMethod(ClassType *classInstantiation, ActionType action, const mtsGenericObject &argument, mtsGenericObject &result)
Definition mtsCallableQualifiedReadMethod.h:160
Definition mtsCallableQualifiedReadMethod.h:70
static mtsExecutionResult CallMethod(ClassType *classInstantiation, ActionType action, const mtsGenericObject &argument, mtsGenericObject &result)
Definition mtsCallableQualifiedReadMethod.h:72
mtsCallableQualifiedReadMethodGeneric(void)
Definition mtsCallableQualifiedReadMethod.h:273
ActionType Action
Definition mtsCallableQualifiedReadMethod.h:266
mtsExecutionResult Execute(const mtsGenericObject &argument, mtsGenericObject &result)
Definition mtsCallableQualifiedReadMethod.h:290
mtsCallableQualifiedReadBase BaseType
Definition mtsCallableQualifiedReadMethod.h:247
mtsCallableQualifiedReadMethodGeneric(ActionType action, ClassType *classInstantiation)
Definition mtsCallableQualifiedReadMethod.h:280
virtual ~mtsCallableQualifiedReadMethodGeneric()
Definition mtsCallableQualifiedReadMethod.h:287
ClassType * ClassInstantiation
Definition mtsCallableQualifiedReadMethod.h:269
void ToStream(std::ostream &outputStream) const
Definition mtsCallableQualifiedReadMethod.h:298
_classType ClassType
Definition mtsCallableQualifiedReadMethod.h:250
bool(ClassType::*) ActionType(const mtsGenericObject &argument, mtsGenericObject &result) const
Definition mtsCallableQualifiedReadMethod.h:257
mtsCallableQualifiedReadMethodGeneric< ClassType > ThisType
Definition mtsCallableQualifiedReadMethod.h:253
mtsCallableQualifiedReadMethod(void)
Definition mtsCallableQualifiedReadMethod.h:206
mtsCallableQualifiedReadMethod< ClassType, ArgumentType, ResultType > ThisType
Definition mtsCallableQualifiedReadMethod.h:51
ActionType Action
Definition mtsCallableQualifiedReadMethod.h:64
mtsCallableQualifiedReadMethod(ActionType action, ClassType *classInstantiation)
Definition mtsCallableQualifiedReadMethod.h:213
mtsCallableQualifiedReadBase BaseType
Definition mtsCallableQualifiedReadMethod.h:43
_classType ClassType
Definition mtsCallableQualifiedReadMethod.h:48
virtual ~mtsCallableQualifiedReadMethod()
Definition mtsCallableQualifiedReadMethod.h:220
_resultType ResultType
Definition mtsCallableQualifiedReadMethod.h:45
mtsExecutionResult Execute(const mtsGenericObject &argument, mtsGenericObject &result)
Definition mtsCallableQualifiedReadMethod.h:223
bool(ClassType::*) ActionType(const ArgumentType &argument, ResultType &result) const
Definition mtsCallableQualifiedReadMethod.h:55
void ToStream(std::ostream &outputStream) const
Definition mtsCallableQualifiedReadMethod.h:230
ClassType * ClassInstantiation
Definition mtsCallableQualifiedReadMethod.h:67
_argumentType ArgumentType
Definition mtsCallableQualifiedReadMethod.h:44
Definition mtsExecutionResult.h:34
@ METHOD_OR_FUNCTION_FAILED
Definition mtsExecutionResult.h:44
@ INVALID_INPUT_TYPE
Definition mtsExecutionResult.h:44
@ COMMAND_SUCCEEDED
Definition mtsExecutionResult.h:44
Base class for data object in cisstMultiTask.
Definition mtsGenericObject.h:52
static T * CastArg(mtsGenericObject &arg)
Definition mtsGenericObjectProxy.h:700
#define CMN_LOG_INIT_ERROR
Definition cmnLogger.h:162
#define CMN_UNUSED(argument)
Definition cmnPortability.h:497
Defines a base class for a callable object with a qualifer and a placeholder to retrieve data.
std::string mtsObjectName(const mtsComponent *object)
Definition mtsComponent.h:588