cisst-saw
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
mtsFunctionRead.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-2014 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 
25 #ifndef _mtsFunctionRead_h
26 #define _mtsFunctionRead_h
27 
28 
33 
34 // Always include last
36 
38 public:
40 protected:
42 
43 #ifndef SWIG
44  template <typename _userType, bool>
46  public:
47  static mtsExecutionResult Call(const mtsFunctionRead * function, _userType & argument) {
48  mtsGenericObjectProxyRef<_userType> argumentWrapped(argument);
49  return function->ExecuteGeneric(argumentWrapped);
50  }
51  };
52  template <typename _userType>
53  class ConditionalWrap<_userType, true> {
54  public:
55  static mtsExecutionResult Call(const mtsFunctionRead * function, _userType & argument) {
56  return function->ExecuteGeneric(argument);
57  }
58  };
59 #endif
60 
61 public:
64  mtsFunctionRead(void);
65 
67  virtual ~mtsFunctionRead();
68 
69  // documented in base class
70  bool Detach(void);
71 
72  // documented in base class
73  bool IsValid(void) const;
74 
80  bool Bind(CommandType * command);
81 
85  { return ExecuteGeneric(argument); }
86 
87  mtsExecutionResult ExecuteGeneric(mtsGenericObject & argument) const;
88 
89 #ifndef SWIG
90 
91  template <class _userType>
92  mtsExecutionResult operator()(_userType & argument) const {
93  mtsExecutionResult result = Command ?
96  return result;
97  }
98 #endif
99 
101  CommandType * GetCommand(void) const;
102 
104  const mtsGenericObject * GetArgumentPrototype(void) const;
105 
107  void ToStream(std::ostream & outputStream) const;
108 
109 };
110 
111 #endif // _mtsFunctionRead_h
#define CISST_EXPORT
Definition: cmnExportMacros.h:50
CommandType * Command
Definition: mtsFunctionRead.h:41
Definition: mtsFunctionRead.h:37
static mtsExecutionResult Call(const mtsFunctionRead *function, _userType &argument)
Definition: mtsFunctionRead.h:55
virtual void ToStream(std::ostream &outputStream) const =0
Defines a command with one argument.
Base class for data object in cisstMultiTask.
Definition: mtsGenericObject.h:56
mtsExecutionResult operator()(mtsGenericObject &argument) const
Definition: mtsFunctionRead.h:84
Definition: mtsFunctionBase.h:38
Defines a base function object to allow heterogeneous containers of functions.
Definition: mtsCommandRead.h:42
virtual bool Detach(void)=0
mtsExecutionResult operator()(_userType &argument) const
Definition: mtsFunctionRead.h:92
mtsCommandRead CommandType
Definition: mtsFunctionRead.h:39
Definition: mtsExecutionResult.h:44
Forward declarations and #define for cisstMultiTask.
Definition: mtsFunctionRead.h:45
Definition: mtsGenericObjectProxy.h:46
Definition: mtsExecutionResult.h:34
Rules of exporting.
static mtsExecutionResult Call(const mtsFunctionRead *function, _userType &argument)
Definition: mtsFunctionRead.h:47
virtual bool IsValid(void) const =0