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>;
44 TypeDefinitions::const_iterator begin;
45 TypeDefinitions::const_iterator end;
52 TypeDomain(
const char* libraryNamespace,
const std::initializer_list<TypeDefinition>& typeDefinitionList);
90 TypeDefinitions typeDefinitions;
98 return this->libraryNamespace.
CStr();
103 return std::make_shared<TypeInfoEnumerator>(*
this);
This class defines a base class for all enumerator implementations and some predefined enumerators as...
Definition: Enumerator.hxx:22
Declares the interface of the enumerator pattern, which is leaned on .NET enumerator idiom.
Definition: IEnumerator.hxx:48
IEnumerator over this library's TypeInfos
Definition: TypeDomain.hpp:36
bool MoveNext(void) override
Moves this enumerator to the next position.
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.hpp:96
~TypeDomain(void)=default
Destructs this instance and frees all resources.
void AddTypeDefinition(TypeDefinition &&typeDefinition)
Adds a TypeDefinition to this collection
TypeDomain(const char *libraryNamespace)
Constructs an TypeDomain instance.
IEnumerator< TypeInfo >::Ptr CreateTypeInfoEnumerator(void)
Returns an IEnumerator over this library's TypeInfos
Definition: TypeDomain.hpp:101
void ReplaceTypeDefinition(TypeDefinition &&typeDefinition)
Replaces a TypeDefinition by a new description
TypeDomain(const TypeDomain &arg)=default
Copy constructor.
TypeDomain(TypeDomain &&arg)=default
Move constructor.
TypeDomain(const char *libraryNamespace, const std::initializer_list< TypeDefinition > &typeDefinitionList)
Constructs an TypeDomain instance.
void AddTypeDefinitions(const std::initializer_list< TypeDefinition > &typeDefinitionList)
Adds a list of TypeDefinitions to this collection
TypeDomain & operator=(const TypeDomain &arg)=default
Copy assignment operator.
TypeDomain & operator=(TypeDomain &&arg)=default
Move assignment operator.
const CharType * CStr() const
Gets the character data of this string.
Definition: BasicString.hxx:1518
Root namespace for the PLCnext API