Eclipse SUMO - Simulation of Urban MObility
FunctionBinding.h
Go to the documentation of this file.
1 /****************************************************************************/
2 // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.org/sumo
3 // Copyright (C) 2001-2019 German Aerospace Center (DLR) and others.
4 // This program and the accompanying materials
5 // are made available under the terms of the Eclipse Public License v2.0
6 // which accompanies this distribution, and is available at
7 // http://www.eclipse.org/legal/epl-v20.html
8 // SPDX-License-Identifier: EPL-2.0
9 /****************************************************************************/
17 // Function type template
18 /****************************************************************************/
19 #ifndef FunctionBinding_h
20 #define FunctionBinding_h
21 
22 
23 
24 // ===========================================================================
25 // included modules
26 // ===========================================================================
27 #include <config.h>
28 
30 #include "CastingFunctionBinding.h"
31 
32 
33 // ===========================================================================
34 // class definitions
35 // ===========================================================================
39 template< class T, typename R >
40 class FunctionBinding : public ValueSource<R> {
41 public:
43  typedef R(T::* Operation)() const;
44 
45  FunctionBinding(T* const source, Operation operation, const R scale = 1) :
46  mySource(source),
47  myOperation(operation),
48  myScale(scale) {}
49 
52 
53  R getValue() const {
54  return myScale * (mySource->*myOperation)();
55  }
56 
57  ValueSource<R>* copy() const {
59  }
60 
63  }
64 
65 private:
68 
71 
73  const R myScale;
74 
75 private:
78 
79 };
80 
81 template<class T>
82 class FunctionBindingString : public ValueSource<std::string> {
83 public:
85  typedef std::string(T::* Operation)() const;
86 
87  FunctionBindingString(T* const source, Operation operation) :
88  mySource(source),
89  myOperation(operation)
90  {}
91 
94 
95  std::string getValue() const {
96  return (mySource->*myOperation)();
97  }
98 
101  }
102 
104  return nullptr;
105  }
106 
107 private:
110 
113 
114 private:
117 
118 };
119 
120 #endif
121 
122 /****************************************************************************/
123 
FunctionBinding::FunctionBinding
FunctionBinding(T *const source, Operation operation, const R scale=1)
Definition: FunctionBinding.h:45
FunctionBindingString::FunctionBindingString
FunctionBindingString(T *const source, Operation operation)
Definition: FunctionBinding.h:87
CastingFunctionBinding
Definition: CastingFunctionBinding.h:37
FunctionBinding::mySource
T * mySource
The object the action is directed to.
Definition: FunctionBinding.h:67
FunctionBinding::copy
ValueSource< R > * copy() const
Definition: FunctionBinding.h:57
FunctionBindingString::getValue
std::string getValue() const
Definition: FunctionBinding.h:95
FunctionBindingString
Definition: FunctionBinding.h:82
FunctionBindingString::~FunctionBindingString
~FunctionBindingString()
Destructor.
Definition: FunctionBinding.h:93
CastingFunctionBinding.h
FunctionBinding::Operation
R(T::* Operation)() const
Type of the function to execute.
Definition: FunctionBinding.h:43
FunctionBindingString::makedoubleReturningCopy
ValueSource< double > * makedoubleReturningCopy() const
Definition: FunctionBinding.h:103
FunctionBinding::myOperation
Operation myOperation
The object's operation to perform.
Definition: FunctionBinding.h:70
FunctionBindingString::myOperation
Operation myOperation
The object's operation to perform.
Definition: FunctionBinding.h:112
FunctionBinding::myScale
const R myScale
The scale to apply.
Definition: FunctionBinding.h:73
FunctionBinding::operator=
FunctionBinding< T, R > & operator=(const FunctionBinding< T, R > &)
invalidated assignment operator
ValueSource.h
FunctionBindingString::mySource
T * mySource
The object the action is directed to.
Definition: FunctionBinding.h:109
FunctionBinding::getValue
R getValue() const
Definition: FunctionBinding.h:53
FunctionBindingString::Operation
std::string(T::* Operation)() const
Type of the function to execute.
Definition: FunctionBinding.h:85
FunctionBinding::~FunctionBinding
~FunctionBinding()
Destructor.
Definition: FunctionBinding.h:51
config.h
ValueSource
Definition: ValueSource.h:32
FunctionBinding::makedoubleReturningCopy
ValueSource< double > * makedoubleReturningCopy() const
Definition: FunctionBinding.h:61
FunctionBindingString::copy
ValueSource< std::string > * copy() const
Definition: FunctionBinding.h:99
FunctionBinding
Definition: FunctionBinding.h:40
FunctionBindingString::operator=
FunctionBindingString< T > & operator=(const FunctionBindingString< T > &)
invalidated assignment operator