Eclipse SUMO - Simulation of Urban MObility
Loading...
Searching...
No Matches
CastingFunctionBinding.h
Go to the documentation of this file.
1
/****************************************************************************/
2
// Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3
// Copyright (C) 2001-2024 German Aerospace Center (DLR) and others.
4
// This program and the accompanying materials are made available under the
5
// terms of the Eclipse Public License 2.0 which is available at
6
// https://www.eclipse.org/legal/epl-2.0/
7
// This Source Code may also be made available under the following Secondary
8
// Licenses when the conditions for such availability set forth in the Eclipse
9
// Public License 2.0 are satisfied: GNU General Public License, version 2
10
// or later which is available at
11
// https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html
12
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
13
/****************************************************************************/
20
// Function type template
21
/****************************************************************************/
22
#pragma once
23
#include <config.h>
24
25
#include <
utils/common/ValueSource.h
>
26
27
28
// ===========================================================================
29
// class definitions
30
// ===========================================================================
34
template
<
class
T,
typename
R,
typename
O >
35
class
CastingFunctionBinding
:
public
ValueSource
<R> {
36
public
:
38
typedef
O(T::*
Operation
)() const;
39
40
CastingFunctionBinding
(T* source,
Operation
operation,
const
R scale = 1) :
41
mySource
(source),
42
myOperation
(operation),
43
myScale
(scale) {}
44
46
~CastingFunctionBinding
() {}
47
48
R
getValue
()
const
{
49
return
myScale
* (R)(
mySource
->*
myOperation
)();
50
}
51
52
ValueSource<R>
*
copy
()
const
{
53
return
new
CastingFunctionBinding<T, R, O>
(
mySource
,
myOperation
,
myScale
);
54
}
55
56
ValueSource<double>
*
makedoubleReturningCopy
()
const
{
57
return
new
CastingFunctionBinding<T, double, O>
(
mySource
,
myOperation
,
myScale
);
58
}
59
60
private
:
62
T*
mySource
;
63
65
Operation
myOperation
;
66
68
const
R
myScale
;
69
70
private
:
72
CastingFunctionBinding<T, R, O>
&
operator=
(
const
CastingFunctionBinding<T, R, O>
&);
73
74
};
ValueSource.h
CastingFunctionBinding
Definition
CastingFunctionBinding.h:35
CastingFunctionBinding::mySource
T * mySource
The object the action is directed to.
Definition
CastingFunctionBinding.h:62
CastingFunctionBinding::Operation
O(T::* Operation)() const
Type of the function to execute.
Definition
CastingFunctionBinding.h:38
CastingFunctionBinding::operator=
CastingFunctionBinding< T, R, O > & operator=(const CastingFunctionBinding< T, R, O > &)
invalidated assignment operator
CastingFunctionBinding::copy
ValueSource< R > * copy() const
Definition
CastingFunctionBinding.h:52
CastingFunctionBinding::makedoubleReturningCopy
ValueSource< double > * makedoubleReturningCopy() const
Definition
CastingFunctionBinding.h:56
CastingFunctionBinding::myScale
const R myScale
The scale to apply.
Definition
CastingFunctionBinding.h:68
CastingFunctionBinding::~CastingFunctionBinding
~CastingFunctionBinding()
Destructor.
Definition
CastingFunctionBinding.h:46
CastingFunctionBinding::getValue
R getValue() const
Definition
CastingFunctionBinding.h:48
CastingFunctionBinding::myOperation
Operation myOperation
The object's operation to perform.
Definition
CastingFunctionBinding.h:65
CastingFunctionBinding::CastingFunctionBinding
CastingFunctionBinding(T *source, Operation operation, const R scale=1)
Definition
CastingFunctionBinding.h:40
ValueSource
Definition
ValueSource.h:29
src
microsim
logging
CastingFunctionBinding.h
Generated on Tue Nov 5 2024 00:10:25 for Eclipse SUMO - Simulation of Urban MObility by
1.9.8