8 #include "Arp/System/Core/TypeDeduction.hxx"
9 #include "Arp/System/Core/Enum.hxx"
10 #include <type_traits>
13 namespace Arp {
namespace System {
namespace Security
18 namespace Arp {
namespace System {
namespace Rsc {
namespace Services
29 class IRscSerializable;
175 template<class T, bool isSerializable = std::is_base_of<IRscSerializable, T>::value>
178 size_t FieldCount = 0;
182 struct StructInfo<T, true>
184 size_t FieldCount = T::GetFieldCount();
188 inline constexpr
RscType GetRscType(
void)
191 return std::is_enum<T>::value ? GetRscType<typename underlying_enum_type<T>::type>() :
201 inline constexpr
RscType GetRscType<boolean>(
void)
207 inline constexpr
RscType GetRscType<char8>(
void)
213 inline constexpr
RscType GetRscType<uint8>(
void)
219 inline constexpr
RscType GetRscType<int8>(
void)
225 inline constexpr
RscType GetRscType<uint16>(
void)
231 inline constexpr
RscType GetRscType<int16>(
void)
237 inline constexpr
RscType GetRscType<uint32>(
void)
243 inline constexpr
RscType GetRscType<int32>(
void)
249 inline constexpr
RscType GetRscType<uint64>(
void)
255 inline constexpr
RscType GetRscType<int64>(
void)
261 inline constexpr
RscType GetRscType<float32>(
void)
267 inline constexpr
RscType GetRscType<float64>(
void)
273 inline constexpr
RscType GetRscType<char*>(
void)
285 inline constexpr
RscType GetRscType<String>(
void)
291 inline constexpr
RscType GetRscType<DateTime>(
void)
297 inline constexpr
RscType GetRscType<RscVersion>(
void)
303 inline constexpr
RscType GetRscType<RscGuid>(
void)
309 inline constexpr
RscType GetRscType<SecurityToken>(
void)
315 inline constexpr
RscType GetRscTypeFrom(
const T& )
317 return GetRscType<T>();
321 inline constexpr
RscType GetRscTypeFrom(
const char(&)[N])
327 inline constexpr
RscType GetRscTypeFrom(
const RscString<N>&)
333 inline constexpr
RscType GetRscTypeFrom(
const SecureString<N>&)
339 inline constexpr
RscType GetRscTypeFrom(
const String&)
345 inline constexpr
RscType GetRscTypeFrom(
const DateTime&)
351 inline constexpr
RscType GetRscTypeFrom(
const RscVersion&)
357 inline constexpr
RscType GetRscTypeFrom(
const RscGuid&)
363 inline constexpr
RscType GetRscTypeFrom(
const SecurityToken&)
368 inline constexpr
bool IsPrimitiveRscType(
RscType type)
375 ARP_CXX_SYMBOL_EXPORT std::ostream& operator<<(std::ostream& os,
const RscType value);
376 ARP_CXX_SYMBOL_EXPORT std::istream& operator>>(std::istream& is,
RscType& value);
This class represents the version of a special SDK or Arp build.
Definition: BasicVersion.hpp:35
The class contains date and time informations.
Definition: DateTime.hpp:45
Adapter class for enums to make them loggable and parsable from e.g. XML files.
Definition: Enum.hxx:23
This class defines a base class for all enumerator implementations and some predefined enumerators as...
Definition: Enumerator.hxx:22
This is the base class of all Arp exception classes.
Definition: Exception.hpp:16
Specialized version of RscString for security context. Not implemented in this version....
Definition: SecureString.hxx:19
Definition: SecurityToken.hpp:12
std::uint8_t uint8
The Arp unsigned integer type of 1 byte size.
Definition: PrimitiveTypes.hpp:27
@ System
System components used by the System, Device, Plc or Io domains.
RscType
Datatypes supported by Rsc. Values are identical with CommonRemoting::RemotingMarshalType....
Definition: RscType.hpp:37
@ IecTimeOfDay
summary>IEC type: LTIME_OF_DAY, LTOD [int64]
@ Uint32
unsigned 32 bit integer
@ Uint16
unsigned 16 bit integer
@ Real32
32 bit floating point number
@ Int16
signed 16 bit integer
@ Uint8
unsigned 8 bit integer
@ Dictionary
Dictionary type.
@ IecDateTime
summary>IEC type: LDATE_AND_TIME, LDT [int64]
@ Object
Object type handled by Rsc as RscVariant
@ Int8
signed 8 bit integer
@ Void
void or null object
@ SecurityToken
Security token needed for security services, handly by Rsc with SecurityToken
@ Struct
Complex datatype with implements IRscSerializable
@ DateTime
Datetime, handled by Rsc with DateTime
@ Real64
64 bit floating point number
@ AnsiString
Ansi string, not implemented in Rsc context
@ Int32
signed 32 bit integer
@ IecTime
summary>IEC type: LTIME [int64]
@ Guid
Universal unique ID Uuid
@ Uint64
unsigned 64 bit integer
@ IecDate
summary>IEC type: LDATE [int64]
@ Stream
Stream type to marshal large data packets (see <see cref="RscStream")/>
@ SecureString
String for security context, handled by Rsc with SecureString
@ Utf16String
Utf-16 string, not implemented in Rsc context
@ Int64
signed 64 bit integer
Root namespace for the PLCnext API