8#include "Arp/Base/Rsc/Commons/Rsc.hpp"
9#include "Arp/Base/Rsc/Commons/RscGuid.hpp"
10#include "Arp/Base/Rsc/Commons/RscString.hxx"
11#include "Arp/Base/Rsc/Commons/RscVersion.hpp"
12#include "Arp/Base/Rsc/Commons/RscTypeInfo.hpp"
13#include "Arp/Base/Rsc/Commons/RscSecureString.hxx"
14#include "Arp/Base/Rsc/Commons/RscVariantBase.hpp"
15#include "Arp/Base/Rsc/Commons/RscTypeDeduction.hpp"
17namespace Arp::Base::Rsc::Commons
58 friend class Arp::Base::Rsc::Commons::Internal::RscVariantAccessor;
70 template<
int M>
explicit RscVariant(
const char value[M]);
71 template<
int M>
explicit RscVariant(
char value[M]);
72 template<
class T>
explicit RscVariant(
const T& value);
91 RscVariant(
size_t arraySize, RscType arrayElementType,
size_t dimensions = 1,
size_t fieldCount = 0);
92 RscVariant(
size_t arraySize, RscType arrayElementType,
RscWriter& writer,
size_t dimensions,
size_t fieldCount);
115 static const size_t maxPrimitiveSize = 8;
116 static const size_t maxStringSize =
static_cast<size_t>(N);
117 static const size_t stringBufferSize =
static_cast<size_t>(N + 1);
118 static const size_t minBufferSize = std::max(maxPrimitiveSize, std::max(
sizeof(
String), std::max(
sizeof(
RscGuid),
sizeof(
RscVersion))));
119 static const size_t bufferSize = std::max(minBufferSize, stringBufferSize);
122 std::array<byte, bufferSize> buffer{};
128#include "Arp/Base/Rsc/Commons/RscVariant.ipp"
This class represents the Arp String. The implementation is based on std::string.
Definition: String.hpp:39
A RSC wrapper class to marshal objects of type Uuid.
Definition: RscGuid.hpp:22
Specialized implementation of RscString for secure context.
Definition: RscSecureString.hxx:16
Contains a static string with string lentgh up to N characters. The string shall be null terminated.
Definition: RscString.hxx:24
Contains information to marshal structs.
Definition: RscStructInfo.hpp:17
This class is a base class of template class RscVariant.
Definition: RscVariantBase.hpp:40
std::function< void(RscType elementType, const RscVariantBase &value)> WriteElementFunction
The write element delegate type.
Definition: RscVariantBase.hpp:47
RscType type
The RSC type of this variant.
Definition: RscVariantBase.hpp:169
std::function< void(RscType elementType, RscVariantBase &value)> ReadElementFunction
The read element delegate type.
Definition: RscVariantBase.hpp:46
Rsc class for variant data types like primitive data type, strings or information about arrays or str...
Definition: RscVariant.hxx:57
~RscVariant(void)
Default destructor.
static RscVariant CreateArrayVariant(size_t arraySize, RscType arrayElementType, size_t dimensions=1, size_t fieldCount=0)
Creates a new RscVariant representing an array.
Definition: RscVariant.ipp:286
RscVariant & operator=(const RscVariant &arg)
The assign operator.
Definition: RscVariant.ipp:229
RscVariant(void)
The default constructor creates an empty instance of RscVariant.
Definition: RscVariant.ipp:18
bool operator==(const RscVariant &arg) const
Compares this instance to arg on equality
Definition: RscVariant.ipp:413
static RscVariant CreateStructVariant(size_t fieldCount)
Creates a new RscVariant initialized with RscStructInfo
Definition: RscVariant.ipp:273
bool operator!=(const RscVariant &arg) const
Compares this instance to arg on inequality
Definition: RscVariant.ipp:423
Specifies a complex version with 4 version numbers and is marshalled to .NET type System....
Definition: RscVersion.hpp:23
Writes marshalled data of RSC services.
Definition: RscWriter.hpp:34
char16_t char16
The Arp character type of 2 byte size.
Definition: PrimitiveTypes.hpp:49
char8_t char8u
The Arp UTF8 character type of 1 byte size.
Definition: PrimitiveTypes.hpp:47