PLCnext API Documentation 25.0.2.69
Uuid.hpp
1
2//
3// Copyright Phoenix Contact GmbH & Co. KG
4//
6#pragma once
7#ifndef ARP_USE_ARP_SYSTEM_COMMONS
8#include "Arp/Base/Commons/Configuration/Uuid.hpp"
10{
12} // end of namespace Arp::System::Commons::Configuration
13#else
14#include "Arp/System/Core/Arp.h"
15#include <boost/uuid/uuid.hpp>
16#include <iostream>
17
18namespace Arp { namespace System { namespace Commons { namespace Configuration
19{
20
25class Uuid
26{
27public: // typedefs/usings
28 using BasicUuid = boost::uuids::uuid;
29
30public: // construction/destruction
31 Uuid(void);
33 Uuid(const Uuid& arg) = default;
35 Uuid(Uuid&& arg) = default;
37 Uuid& operator=(const Uuid& arg) = default;
39 ~Uuid(void) = default;
40
41public: // global compare operators
42 friend bool operator==(const Uuid& lhs, const Uuid& rhs)noexcept;
43 friend bool operator!=(const Uuid& lhs, const Uuid& rhs)noexcept;
44 friend bool operator<(const Uuid& lhs, const Uuid& rhs)noexcept;
45 friend bool operator>(const Uuid& lhs, const Uuid& rhs)noexcept;
46 friend bool operator<=(const Uuid& lhs, const Uuid& rhs)noexcept;
47 friend bool operator>=(const Uuid& lhs, const Uuid& rhs)noexcept;
48
49public: // global stream operators
50 friend std::ostream& operator<<(std::ostream& os, const Uuid& id);
51 friend std::istream& operator>>(std::istream& is, Uuid& id);
52
53public: // static properties
54 static Uuid Empty(void);
55
56public: // static operations
57 static Uuid CreateNew(void);
58 static Uuid Create(const byte* pBuffer);
59 static Uuid CreateFromLittleEndian(const byte* pBuffer);
60 static Uuid Parse(const String& input);
61 static bool TryParse(const String& input, Uuid& result);
62
63public: // properties
64 bool IsEmpty(void)const;
65
66public: // operations
67 String ToString(void)const;
68 size_t GetHashValue(void)const;
69 void Clear(void);
70 void CopyTo(byte* pBuffer)const;
71 void CopyLittleEndianTo(byte* pBuffer)const;
72
73private: // fields
74 BasicUuid basicId;
75};
76
77}}}} // end of namespace Arp::System::Commons::Configuration
78
80// standard template specializations of class Uuid
81namespace std
82{
83
84// std hash functor of class Uuid
85template<>
86struct hash<Arp::System::Commons::Configuration::Uuid>
87{
88public:
90 typedef size_t result_type;
91
92public:
93 result_type operator()(const argument_type& key) const
94 {
95 return key.GetHashValue();
96 }
97};
98}
99template<> struct fmt::formatter<Arp::System::Commons::Configuration::Uuid>: public fmt::ostream_formatter {};
100
101#endif // ndef ARP_USE_ARP_SYSTEM_COMMONS
This class represents a Universal Unique ID.
Definition: Uuid.hpp:16
static Uuid CreateFromLittleEndian(const byte *pData)
Creates a new unique Uuid from the given bytes.
Definition: Uuid.cpp:165
ARP_EXPORT friend bool operator>(const Uuid &lhs, const Uuid &rhs) noexcept
The greater operator compares 2 Uuids.
Definition: Uuid.cpp:95
ARP_EXPORT friend bool operator<(const Uuid &lhs, const Uuid &rhs) noexcept
The less operator compares 2 Uuids.
Definition: Uuid.cpp:84
~Uuid(void)
The default destructor.
void CopyLittleEndianTo(byte *pData) const
Copies the binary data of this Uuid to the supplied buffer in little endian format.
Definition: Uuid.cpp:226
void Clear(void)
Empties this instance.
Definition: Uuid.cpp:212
static Uuid CreateNew(void)
Creates a new unique Uuid.
Definition: Uuid.cpp:149
size_t GetHashValue(void) const
Returns the hash value of this Uuid.
Definition: Uuid.cpp:206
ARP_EXPORT friend std::istream & operator>>(std::istream &is, Uuid &id)
The istream operator is used for string parsing.
Definition: Uuid.cpp:135
static bool TryParse(const String &input, Uuid &result)
Tries to creates a new Uuid by parsing the supplied string.
Definition: Uuid.cpp:185
static Uuid Parse(const String &input)
Creates a new Uuid by parsing the supplied string.
Definition: Uuid.cpp:176
ARP_EXPORT friend std::ostream & operator<<(std::ostream &os, const Uuid &id)
The ostream operator is used for logging and string formatting.
Definition: Uuid.cpp:126
ARP_EXPORT friend bool operator!=(const Uuid &lhs, const Uuid &rhs) noexcept
The inequality operator compares 2 Uuids.
Definition: Uuid.cpp:73
ARP_EXPORT friend bool operator>=(const Uuid &lhs, const Uuid &rhs) noexcept
The greater-or-equal operator compares 2 Uuids.
Definition: Uuid.cpp:117
Uuid(void)
Constructs an empty Uuid instance.
Definition: Uuid.cpp:55
bool IsEmpty(void) const
Determines if this instance is empty.
Definition: Uuid.cpp:192
ARP_EXPORT friend bool operator<=(const Uuid &lhs, const Uuid &rhs) noexcept
The less-or-equal operator compares 2 Uuids.
Definition: Uuid.cpp:106
ARP_EXPORT friend bool operator==(const Uuid &lhs, const Uuid &rhs) noexcept
The equality operator compares 2 Uuids.
Definition: Uuid.cpp:64
void CopyTo(byte *pData) const
Copies the binary data of this Uuid to the supplied buffer.
Definition: Uuid.cpp:219
String ToString(void) const
Returns the string representation of this Uuid.
Definition: Uuid.cpp:199
static Uuid Create(const byte *pData)
Creates a new unique Uuid from the given bytes.
Definition: Uuid.cpp:157
Uuid & operator=(const Uuid &arg)
THe default copy-assignment operator.
@ Empty
No sink assigned to session yet.
Namespace for configuration related classes
Root namespace for the PLCnext API
Namespace of the C++ standard library