PLCnext API Documentation 25.0.2.69
RscConcepts.hpp
1
2//
3// Copyright Phoenix Contact GmbH & Co. KG
4//
6#pragma once
8#include "Arp/Base/Rsc/Commons/RscSerializable.hpp"
9
10namespace Arp::Base::Rsc::Commons::Services
11{
12
13// type imports
15
39template<class T>
40concept RscArithmeticType = std::is_arithmetic_v<T>;
41
43template<class T>
44concept RscEnumType = std::is_enum_v<T>;
45
47template<class T>
49
58template<class T>
59concept RscClassType = std::is_class_v<T>&& !std::is_base_of_v<RscSerializable, T>;
60
70template<class T>
71concept RscSerializableType = std::is_base_of_v<RscSerializable, T>;
72
80template<class T>
81concept RscStructHasFieldCount = requires(T)
82{
83 {
84 T::GetFieldCount()
85 }
86 -> std::convertible_to<size_t>;
87};
88
98template<class T>
100
101} // end of namespace Arp::Base::Rsc::Commons::Services
102
Any custom struct type which is intended to be marshalled in a Rsc serialization context,...
Definition: RscSerializable.hpp:35
Defines a concept for arithmetic types.
Definition: RscConcepts.hpp:40
Defines a concept for matching class or struct types which are not derived by RscSerializable.
Definition: RscConcepts.hpp:59
Defines a concept for matching enum types.
Definition: RscConcepts.hpp:44
Defines a concept for matching primitive or enum types.
Definition: RscConcepts.hpp:48
Defines a concept for matching class types which are derived by RscSerializable.
Definition: RscConcepts.hpp:99
Defines a concept for matching class types which are derived by RscSerializable.
Definition: RscConcepts.hpp:71
For internal use only.
Definition: RscConcepts.hpp:81