cisst-saw
Loading...
Searching...
No Matches
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
12This software is provided "as is" under an open source license, with
13no warranty. The complete license can be found in license.txt and
14http://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
33
34// Always include last
36
38public:
41protected:
45
46#ifndef SWIG
47 template <typename _userType, bool>
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
64public:
68
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
88 { return ExecuteGeneric(argument); }
89
92
93#ifndef SWIG
95 template <class _userType>
96 mtsExecutionResult operator()(const _userType & argument) const
97 { return Execute(argument); }
98
99 template <class _userType>
103
104 template <class _userType>
108#endif
109
111 CommandType * GetCommand(void) const;
112
115
117 void ToStream(std::ostream & outputStream) const;
118
119};
120
121#endif // _mtsFunctionWrite_h
122
Definition mtsCommandWriteBase.h:40
Definition mtsExecutionResult.h:34
static mtsExecutionResult Call(mtsFunctionWrite::ActionType executeMethod, const mtsFunctionWrite *function, const _userType &argument)
Definition mtsFunctionWrite.h:58
Definition mtsFunctionWrite.h:48
static mtsExecutionResult Call(mtsFunctionWrite::ActionType executeMethod, const mtsFunctionWrite *function, const _userType &argument)
Definition mtsFunctionWrite.h:50
mtsExecutionResult operator()(const mtsGenericObject &argument) const
Definition mtsFunctionWrite.h:87
mtsExecutionResult ExecuteGeneric(const mtsGenericObject &argument) const
const mtsGenericObject * GetArgumentPrototype(void) const
mtsExecutionResult ExecuteBlockingGeneric(const mtsGenericObject &argument) const
CommandType * GetCommand(void) const
mtsExecutionResult ExecuteBlocking(const _userType &argument) const
Definition mtsFunctionWrite.h:105
virtual ~mtsFunctionWrite()
mtsCommandWriteBase CommandType
Definition mtsFunctionWrite.h:39
bool Detach(void)
bool IsValid(void) const
mtsExecutionResult(mtsFunctionWrite::*) ActionType(const mtsGenericObject &) const
Definition mtsFunctionWrite.h:40
void ToStream(std::ostream &outputStream) const
mtsExecutionResult Execute(const _userType &argument) const
Definition mtsFunctionWrite.h:100
CommandType * Command
Definition mtsFunctionWrite.h:44
bool Bind(CommandType *command)
mtsExecutionResult operator()(const _userType &argument) const
Definition mtsFunctionWrite.h:96
Base class for data object in cisstMultiTask.
Definition mtsGenericObject.h:52
Definition mtsGenericObjectProxy.h:491
#define CISST_EXPORT
Definition cmnExportMacros.h:50
Defines a base class for a command with one argument.
Rules of exporting.
Forward declarations and #define for cisstMultiTask.
Defines a base function object to allow heterogeneous containers of functions.