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