8#include "Arp/System/Core/Enumerator.hxx"
9#include "Arp/Plc/Commons/Meta/TypeInfo.hpp"
10#include "Arp/Plc/Commons/Meta/TypeSystem/TypeDefinition.hpp"
11#include <initializer_list>
15namespace Arp {
namespace Plc {
namespace Commons {
namespace Meta
18class TypeInfoProvider;
21namespace Arp {
namespace Plc {
namespace Commons {
namespace Meta {
namespace TypeSystem
30 using TypeDefinitions = std::map<String, TypeDefinition>;
36 explicit TypeDomain(
const char* libraryNamespace);
37 TypeDomain(
const char* libraryNamespace,
const std::initializer_list<TypeDefinition>& typeDefinitionList);
53 void AddTypeDefinitions(
const std::initializer_list<TypeDefinition>& typeDefinitionList);
63 TypeDefinitions typeDefinitions;
Declares the interface of the enumerator pattern, which is leaned on .NET enumerator idiom.
Definition: IEnumerator.hxx:49
This class represents the Arp String. The implementation is based on std::string.
Definition: String.hpp:39
IEnumerator over this library's TypeInfos
Definition: TypeDomain.cpp:13
Container for the type information of a library
Definition: TypeDomain.hpp:26
const char * GetLibraryNamespace(void) const
Returns the namespace of the library
Definition: TypeDomain.cpp:43
~TypeDomain(void)=default
Destructs this instance and frees all resources.
void AddTypeDefinition(TypeDefinition &&typeDefinition)
Adds a TypeDefinition to this collection
Definition: TypeDomain.cpp:61
TypeDomain(const char *libraryNamespace)
Constructs an TypeDomain instance.
Definition: TypeDomain.cpp:30
IEnumerator< TypeInfo >::Ptr CreateTypeInfoEnumerator(void) const
Returns an IEnumerator over this library's TypeInfos
Definition: TypeDomain.cpp:82
void ReplaceTypeDefinition(TypeDefinition &&typeDefinition)
Replaces a TypeDefinition by a new description
Definition: TypeDomain.cpp:73
TypeDomain(const TypeDomain &arg)=default
Copy constructor.
TypeDomain(TypeDomain &&arg)=default
Move constructor.
void AddTypeDefinitions(const std::initializer_list< TypeDefinition > &typeDefinitionList)
Adds a list of TypeDefinitions to this collection
Definition: TypeDomain.cpp:50
TypeDomain & operator=(const TypeDomain &arg)=default
Copy assignment operator.
TypeDomain & operator=(TypeDomain &&arg)=default
Move assignment operator.
Root namespace for the PLCnext API