cisst-saw
Toggle main menu visibility
Loading...
Searching...
No Matches
tmp
cisst-saw
cisst
cisstMultiTask
mtsFunctionWrite.h
Go to the documentation of this file.
1
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2
/* ex: set filetype=cpp softtabstop=4 shiftwidth=4 tabstop=4 cindent expandtab: */
3
4
/*
5
6
Author(s): Peter Kazanzides, Anton Deguet
7
8
(C) Copyright 2007-2025 Johns Hopkins University (JHU), All Rights Reserved.
9
10
--- begin cisst license - do not edit ---
11
12
This software is provided "as is" under an open source license, with
13
no warranty. The complete license can be found in license.txt and
14
http://www.cisst.org/cisst/license.txt.
15
16
--- end cisst license ---
17
*/
18
19
24
25
#ifndef _mtsFunctionWrite_h
26
#define _mtsFunctionWrite_h
27
28
29
#include <
cisstMultiTask/mtsFunctionBase.h
>
30
#include <
cisstMultiTask/mtsCommandWriteBase.h
>
31
#include <
cisstMultiTask/mtsForwardDeclarations.h
>
32
#include <
cisstMultiTask/mtsGenericObjectProxy.h
>
33
34
// Always include last
35
#include <
cisstMultiTask/mtsExport.h
>
36
37
class
CISST_EXPORT
mtsFunctionWrite
:
public
mtsFunctionBase
{
38
public
:
39
typedef
mtsCommandWriteBase
CommandType
;
40
typedef
mtsExecutionResult
(
mtsFunctionWrite
::*
ActionType
)(
const
mtsGenericObject
&)
const
;
41
protected
:
44
CommandType
*
Command
;
45
46
#ifndef SWIG
47
template
<
typename
_userType,
bool
>
48
class
ConditionalWrap
{
49
public
:
50
static
mtsExecutionResult
Call
(
mtsFunctionWrite::ActionType
executeMethod,
const
mtsFunctionWrite
* function,
const
_userType & argument) {
51
mtsGenericObjectProxyRef<_userType>
argumentWrapped(argument);
52
return
(function->*executeMethod)(argumentWrapped);
53
}
54
};
55
template
<
typename
_userType>
56
class
ConditionalWrap
<_userType, true> {
57
public
:
58
static
mtsExecutionResult
Call
(
mtsFunctionWrite::ActionType
executeMethod,
const
mtsFunctionWrite
* function,
const
_userType & argument) {
59
return
(function->*executeMethod)(argument);
60
}
61
};
62
#endif
63
64
public
:
67
mtsFunctionWrite
();
68
70
virtual
~mtsFunctionWrite
();
71
72
// documented in base class
73
bool
Detach
(
void
);
74
75
// documented in base class
76
bool
IsValid
(
void
)
const
;
77
83
bool
Bind
(
CommandType
* command);
84
87
mtsExecutionResult
operator()
(
const
mtsGenericObject
& argument)
const
88
{
return
ExecuteGeneric
(argument); }
89
90
mtsExecutionResult
ExecuteGeneric
(
const
mtsGenericObject
& argument)
const
;
91
mtsExecutionResult
ExecuteBlockingGeneric
(
const
mtsGenericObject
& argument)
const
;
92
93
#ifndef SWIG
95
template
<
class
_userType>
96
mtsExecutionResult
operator()
(
const
_userType & argument)
const
97
{
return
Execute
(argument); }
98
99
template
<
class
_userType>
100
mtsExecutionResult
Execute
(
const
_userType & argument)
const
{
101
return
ConditionalWrap<_userType, cmnIsDerivedFrom<_userType, mtsGenericObject>::IS_DERIVED
>::Call(&
mtsFunctionWrite::ExecuteGeneric
,
this
, argument);
102
}
103
104
template
<
class
_userType>
105
mtsExecutionResult
ExecuteBlocking
(
const
_userType & argument)
const
{
106
return
ConditionalWrap<_userType, cmnIsDerivedFrom<_userType, mtsGenericObject>::IS_DERIVED
>::Call(&
mtsFunctionWrite::ExecuteBlockingGeneric
,
this
, argument);
107
}
108
#endif
109
111
CommandType
*
GetCommand
(
void
)
const
;
112
114
const
mtsGenericObject
*
GetArgumentPrototype
(
void
)
const
;
115
117
void
ToStream
(std::ostream & outputStream)
const
;
118
119
};
120
121
#endif
// _mtsFunctionWrite_h
122
mtsCommandWriteBase
Definition
mtsCommandWriteBase.h:40
mtsExecutionResult
Definition
mtsExecutionResult.h:34
mtsExecutionResult::mtsExecutionResult
mtsExecutionResult(void)
mtsFunctionBase::mtsFunctionBase
mtsFunctionBase()
mtsFunctionWrite::ConditionalWrap< _userType, true >::Call
static mtsExecutionResult Call(mtsFunctionWrite::ActionType executeMethod, const mtsFunctionWrite *function, const _userType &argument)
Definition
mtsFunctionWrite.h:58
mtsFunctionWrite::ConditionalWrap
Definition
mtsFunctionWrite.h:48
mtsFunctionWrite::ConditionalWrap::Call
static mtsExecutionResult Call(mtsFunctionWrite::ActionType executeMethod, const mtsFunctionWrite *function, const _userType &argument)
Definition
mtsFunctionWrite.h:50
mtsFunctionWrite::operator()
mtsExecutionResult operator()(const mtsGenericObject &argument) const
Definition
mtsFunctionWrite.h:87
mtsFunctionWrite::ExecuteGeneric
mtsExecutionResult ExecuteGeneric(const mtsGenericObject &argument) const
mtsFunctionWrite::GetArgumentPrototype
const mtsGenericObject * GetArgumentPrototype(void) const
mtsFunctionWrite::mtsFunctionWrite
mtsFunctionWrite()
mtsFunctionWrite::ExecuteBlockingGeneric
mtsExecutionResult ExecuteBlockingGeneric(const mtsGenericObject &argument) const
mtsFunctionWrite::GetCommand
CommandType * GetCommand(void) const
mtsFunctionWrite::ExecuteBlocking
mtsExecutionResult ExecuteBlocking(const _userType &argument) const
Definition
mtsFunctionWrite.h:105
mtsFunctionWrite::~mtsFunctionWrite
virtual ~mtsFunctionWrite()
mtsFunctionWrite::CommandType
mtsCommandWriteBase CommandType
Definition
mtsFunctionWrite.h:39
mtsFunctionWrite::Detach
bool Detach(void)
mtsFunctionWrite::IsValid
bool IsValid(void) const
mtsFunctionWrite::ActionType
mtsExecutionResult(mtsFunctionWrite::*) ActionType(const mtsGenericObject &) const
Definition
mtsFunctionWrite.h:40
mtsFunctionWrite::ToStream
void ToStream(std::ostream &outputStream) const
mtsFunctionWrite::Execute
mtsExecutionResult Execute(const _userType &argument) const
Definition
mtsFunctionWrite.h:100
mtsFunctionWrite::Command
CommandType * Command
Definition
mtsFunctionWrite.h:44
mtsFunctionWrite::Bind
bool Bind(CommandType *command)
mtsFunctionWrite::operator()
mtsExecutionResult operator()(const _userType &argument) const
Definition
mtsFunctionWrite.h:96
mtsGenericObject
Base class for data object in cisstMultiTask.
Definition
mtsGenericObject.h:52
mtsGenericObjectProxyRef
Definition
mtsGenericObjectProxy.h:491
CISST_EXPORT
#define CISST_EXPORT
Definition
cmnExportMacros.h:50
mtsCommandWriteBase.h
Defines a base class for a command with one argument.
mtsExport.h
Rules of exporting.
mtsForwardDeclarations.h
Forward declarations and #define for cisstMultiTask.
mtsFunctionBase.h
Defines a base function object to allow heterogeneous containers of functions.
mtsGenericObjectProxy.h
Generated by
1.18.0