PLCnext API Documentation 25.0.2.69
RscVariantHelpers.hpp
1
2//
3// Copyright Phoenix Contact GmbH & Co. KG
4//
6
7#pragma once
8
10#include "Arp/Base/Rsc/Commons/RscVariant.hxx"
11
12namespace Arp { namespace System { namespace Nm { namespace Internal
13{
14
16
18template<typename T, int N>
19struct rscvariant_cast
20{
21 T operator()(const RscVariant<N>& value)
22 {
23 T result{};
24 value.CopyTo(result);
25 return result;
26 }
27};
28
29
31template<int N>
32struct rscvariant_cast<RscVariant<N>, N>
33{
34 RscVariant<N> operator()(const RscVariant<N>& value)
35 {
36 return value;
37 }
38};
39
40
42template<int N>
43struct rscvariant_cast<String, N>
44{
45 String operator()(const RscVariant<N>& value)
46 {
47 return value.GetChars();
48 }
49};
50
51
52} // namespace Internal
53
55
57template<typename T, int N>
59{
60 return Internal::rscvariant_cast<T, N>()(value);
61}
62
63}}} // end of namespace Arp::System::Nm
Rsc class for variant data types like primitive data type, strings or information about arrays or str...
Definition: RscVariant.hxx:57
T rscvariant_cast(const RscVariant< N > &value)
Casts an RscVariant to T
Definition: RscVariantHelpers.hpp:58
Root namespace for the PLCnext API