PLCnext API Documentation 24.0.0.71
LongStringPayloadField.hpp
1
2//
3// Copyright PHOENIX CONTACT Electronics GmbH
4//
6
7
8#pragma once
9
10#include "Arp/System/Core/Arp.h"
11#include "Arp/System/Commons/Logging.h"
12#include "Arp/System/Nm/GenericPayload.hpp"
13
14namespace Arp { namespace System { namespace Nm
15{
16
17class ARP_CXX_SYMBOL_EXPORT LongStringPayloadField
18{
19public:
20 template<typename PayloadType>
21 explicit LongStringPayloadField(PayloadType& payloadArg, const String& str);
22
23 template<typename PayloadType>
24 explicit LongStringPayloadField(PayloadType& payloadArg);
25
26
27 size_t GetFieldIndexBegin() const;
28 size_t GetFieldCount() const;
29 String GetFormatString() const;
30 String GetString() const;
31 bool IsEmpty() const;
32
33private:
34 void CreatePayloadFieldsForString(const String& str);
35 void AddStringFields(size_t count);
36 void SetLongStringFieldValues(const String& str);
37 static size_t GetNumberOfFieldForString(const String& str);
38 static size_t FieldIndexToFormatStringIndex(size_t fieldIndex);
39
40private:
41 GenericPayload& payload;
42 const size_t fieldIndexBegin;
43};
44
45
46template<typename PayloadType>
47LongStringPayloadField::LongStringPayloadField(PayloadType& payloadArg, const String& str)
48 : payload(payloadArg.payload),
49 fieldIndexBegin(payload.AddField(Arp::System::Rsc::Services::GetRscType<size_t>()))
50{
51 this->CreatePayloadFieldsForString(str);
52 this->SetLongStringFieldValues(str);
53}
54
55template<typename PayloadType>
56LongStringPayloadField::LongStringPayloadField(PayloadType& payloadArg)
57 : payload(payloadArg.payload),
58 fieldIndexBegin(payload.AddField(Arp::System::Rsc::Services::GetRscType<size_t>()))
59{
60 this->AddStringFields(this->GetFieldCount());
61}
62
63
64}}} // namespace Arp::System::Nm
Generic access to a IPayload
Definition: GenericPayload.hpp:20
Definition: LongStringPayloadField.hpp:18
@ System
System components used by the System, Device, Plc or Io domains.
Root namespace for the PLCnext API