PLCnext API Documentation 25.0.2.69
LongStringPayloadField.hpp
1
2//
3// Copyright Phoenix Contact GmbH & Co. KG
4//
6#pragma once
8#include "Arp/System/Commons/Logging.h"
9#include "Arp/System/Nm/GenericPayload.hpp"
10#include "Arp/Base/Rsc/Commons/RscTypeDeduction.hpp"
11
12namespace Arp { namespace System { namespace Nm
13{
14
15using Arp::Base::Rsc::Commons::RscType;
17
18class ARP_CXX_SYMBOL_EXPORT LongStringPayloadField
19{
20public:
21 template<typename PayloadType>
22 explicit LongStringPayloadField(PayloadType& payloadArg, const String& str);
23
24 template<typename PayloadType>
25 explicit LongStringPayloadField(PayloadType& payloadArg);
26
27
28 size_t GetFieldIndexBegin() const;
29 size_t GetFieldCount() const;
30 String GetFormatString() const;
31 String GetString() const;
32 bool IsEmpty() const;
33
34private:
35 void CreatePayloadFieldsForString(const String& str);
36 void AddStringFields(size_t count);
37 void SetLongStringFieldValues(const String& str);
38 static size_t GetNumberOfFieldForString(const String& str);
39 static size_t FieldIndexToFormatStringIndex(size_t fieldIndex);
40
41private:
42 GenericPayload& payload;
43 const size_t fieldIndexBegin;
44};
45
46
47template<typename PayloadType>
48LongStringPayloadField::LongStringPayloadField(PayloadType& payloadArg, const String& str)
49 : payload(payloadArg.payload),
50 fieldIndexBegin(payload.AddField(RscTypeDeduction::GetFrom(fieldIndexBegin)))
51{
52 this->CreatePayloadFieldsForString(str);
53 this->SetLongStringFieldValues(str);
54}
55
56template<typename PayloadType>
57LongStringPayloadField::LongStringPayloadField(PayloadType& payloadArg)
58 : payload(payloadArg.payload),
59 fieldIndexBegin(payload.AddField(RscTypeDeduction::GetFrom(fieldIndexBegin)))
60{
61 this->AddStringFields(this->GetFieldCount());
62}
63
64
65}}} // namespace Arp::System::Nm
This class represents the Arp String. The implementation is based on std::string.
Definition: String.hpp:39
This class is used to deduct RSC types automatically by compilation.
Definition: RscTypeDeduction.hpp:24
Generic access to a IPayload
Definition: GenericPayload.hpp:20
Definition: LongStringPayloadField.hpp:19
Root namespace for the PLCnext API