8#include "Arp/Plc/Commons/Esm/ProgramBase.hpp" 
    9#include "Arp/Plc/Commons/Meta/DynamicPortsBuilder.hpp" 
   10#include "Arp/Plc/Commons/Meta/TypeSystem/TypeDefinition.hpp" 
   11#include "Arp/Plc/Commons/Meta/TypeSystem/TypeDomain.hpp" 
   13namespace Arp { 
namespace Plc { 
namespace Commons { 
namespace Esm
 
   27template<
typename TProgram, 
size_t MaxNumPorts>
 
   43    std::array<byte*, MaxNumPorts> ports{};
 
   50template<
typename TProgram, 
size_t MaxNumPorts>
 
   54      typeDomain(typeDomain),
 
   56                              typeDomain.GetLibraryNamespace(), programName, this->ports, offsetof(TProgram, ports)))
 
   64template<
typename TProgram, 
size_t MaxNumPorts>
 
   69    this->dynamicPortsBuilder.AddPort(portName, value, standardAttributes);
 
   73template<
typename TProgram, 
size_t MaxNumPorts>
 
   77    this->typeDomain.ReplaceTypeDefinition(
TypeDefinition(this->dynamicPortsBuilder.GetTypeDefinition()));
 
   81template<
typename TProgram, 
size_t MaxNumPorts>
 
   84    return this->dynamicPortsBuilder;
 
   88template<
typename TProgram, 
size_t MaxNumPorts>
 
   91    return this->dynamicPortsBuilder;
 
This class represents the Arp String. The implementation is based on std::string.
Definition: String.hpp:39
 
Base class for a program providing dynamic ports
Definition: DynamicPortsProgramBase.hpp:29
 
DynamicPortsBuilder & GetDynamicPortsBuilder()
Returns a reference to the DynamicPortsBuilder
Definition: DynamicPortsProgramBase.hpp:82
 
DynamicPortsProgramBase(const String &programName, TypeDomain &typeDomain)
Constructs an ProgramBase instance.
Definition: DynamicPortsProgramBase.hpp:51
 
void ReplaceProgramTypeDefinition() const
Updates the type definition for this program in the library's TypeDomain
Definition: DynamicPortsProgramBase.hpp:74
 
void AddPort(const String &portName, T &value, StandardAttribute standardAttributes)
Adds a variable as dynamic port
Definition: DynamicPortsProgramBase.hpp:66
 
This class implements the base functionality of a program.
Definition: ProgramBase.hpp:15
 
Container for the type information of a library
Definition: TypeDomain.hpp:26
 
@ Create
Creates a new file. If the file already exists, it is overwritten.
 
Root namespace for the PLCnext API