opynsim
Unofficial C++ Documentation
Loading...
Searching...
No Matches
libopynsim
documents
output_extractors
output_value_extractor.h
Go to the documentation of this file.
1
#pragma once
2
3
#include <
libopynsim/documents/state_view_with_metadata.h
>
4
5
#include <
liboscar/variant/variant.h
>
6
7
#include <concepts>
8
#include <functional>
9
#include <utility>
10
11
namespace
opyn
12
{
13
// encapsulates a function that can extract a single output value from a `StateViewWithMetadata`
14
//
15
// be careful about lifetimes: these value extractors are usually "tied" to a component that
16
// they're extracting from, so it's handy to ensure that the callback function has proper
17
// lifetime management (e.g. reference counted pointers or similar)
18
class
OutputValueExtractor
final {
19
public
:
20
static
OutputValueExtractor
constant
(
osc::Variant
value)
21
{
22
return
OutputValueExtractor
{std::move(value)};
23
}
24
25
template
<
typename
T>
26
requires
std::constructible_from<osc::Variant, T&&>
27
static
OutputValueExtractor
constant
(T&& value)
28
{
29
return
OutputValueExtractor
{
osc::Variant
{std::forward<T>(value)}};
30
}
31
32
explicit
OutputValueExtractor
(std::function<
osc::Variant
(
const
StateViewWithMetadata
&)> callback_) :
33
m_Callback{std::move(callback_)}
34
{}
35
36
osc::Variant
operator()
(
const
StateViewWithMetadata
& state)
const
{
return
m_Callback(state); }
37
private
:
38
explicit
OutputValueExtractor
(
osc::Variant
value) :
39
m_Callback{[v = std::move(value)](const
StateViewWithMetadata
&) {
return
v; }}
40
{}
41
42
std::function<
osc::Variant
(
const
StateViewWithMetadata&)> m_Callback;
43
};
44
}
opyn::OutputValueExtractor
Definition
output_value_extractor.h:18
opyn::OutputValueExtractor::constant
static OutputValueExtractor constant(osc::Variant value)
Definition
output_value_extractor.h:20
opyn::OutputValueExtractor::OutputValueExtractor
OutputValueExtractor(std::function< osc::Variant(const StateViewWithMetadata &)> callback_)
Definition
output_value_extractor.h:32
opyn::OutputValueExtractor::constant
static OutputValueExtractor constant(T &&value)
Definition
output_value_extractor.h:27
opyn::OutputValueExtractor::operator()
osc::Variant operator()(const StateViewWithMetadata &state) const
Definition
output_value_extractor.h:36
opyn::StateViewWithMetadata
Definition
state_view_with_metadata.h:12
osc::Variant
Definition
variant.h:18
opyn
Definition
component_registry.h:14
state_view_with_metadata.h
variant.h
Generated by
1.9.8