PLCnext API Documentation 25.0.2.69
ArpVersion.hpp
1
2//
3// Copyright Phoenix Contact GmbH & Co. KG
4//
6#pragma once
8#include "Arp/Base/Core/Detail/Version.hpp"
11
12namespace Arp { namespace Base { namespace Core
13{
14
20class ARP_EXPORT ArpVersion
21{
22public: // Impl forward declaration
23 class Impl;
24
25public: // usings
26 using Value = Version::Value;
27
28public: // canonical construction/destruction/assignment
30 ArpVersion(ArpVersion&& arg)noexcept;
34
35public: // construction
37 ArpVersion(Value major, const String& state = "", const String& name = "");
38 ArpVersion(Value major, Value minor, const String& state = "", const String& name = "");
39 ArpVersion(Value major, Value minor, Value patch, const String& state = "", const String& name = "");
40 ArpVersion(Value major, Value minor, Value patch, Value build, const String& state = "", const String& name = "");
41
42public: // operators
43 ARP_EXPORT friend bool operator==(const ArpVersion& left, const ArpVersion& right);
44
45public: // static operations
46 static const ArpVersion& GetCurrent(void);
47 static ArpVersion Parse(const String& input);
48 static bool TryParse(const String& input, ArpVersion& result);
49
50public: // setter/getter operations
51 const String& GetName(void)const;
52 const String& GetState(void)const;
53 const Version& GetBuildVersion(void)const;
54
55public: // operations
56 String ToString(void)const;
57
58public: // deprecated operations
59 ARP_DEPRECATED("Use ArpVersion::GetBuildVersion().GetMajor() instead.")
60 uint8 GetMajor(void)const;
61 ARP_DEPRECATED("Use ArpVersion::GetBuildVersion().GetMinor() instead.")
62 uint8 GetMinor(void)const;
63 ARP_DEPRECATED("Use ArpVersion::GetBuildVersion().GetPatch() instead.")
64 uint8 GetPatch(void)const;
65 ARP_DEPRECATED("Use ArpVersion::GetBuildVersion().GetBuildNumber() instead.")
66 uint32 GetBuild(void)const;
67
68 friend ARP_EXPORT bool operator>(const ArpVersion& left, const ArpVersion& right);
69 friend ARP_EXPORT bool operator<(const ArpVersion& left, const ArpVersion& right);
70 friend ARP_EXPORT bool operator>=(const ArpVersion& left, const ArpVersion& right);
71 friend ARP_EXPORT bool operator<=(const ArpVersion& left, const ArpVersion& right);
72
73public: // internal operations
74 Impl& GetImpl(void);
75 const Impl& GetImpl(void)const;
76
77private: // Impl usings
78 using Pimpl = PimplPtr<Impl, true>;
79
80private: // Impl fields
81 Pimpl pimpl;
82};
83
84ARP_DEPRECATED("Use compare operator of ArpVersion::GetBuildVersion() instead.")
85ARP_EXPORT bool operator>(const ArpVersion& left, const ArpVersion& right);
86
87ARP_DEPRECATED("Use compare operator of ArpVersion::GetBuildVersion() instead.")
88ARP_EXPORT bool operator<(const ArpVersion& left, const ArpVersion& right);
89
90ARP_DEPRECATED("Use compare operator of ArpVersion::GetBuildVersion() instead.")
91ARP_EXPORT bool operator>=(const ArpVersion& left, const ArpVersion& right);
92
93ARP_DEPRECATED("Use compare operator of ArpVersion::GetBuildVersion() instead.")
94ARP_EXPORT bool operator<=(const ArpVersion& left, const ArpVersion& right);
95
96
105#define ARP_VERSION_CURRENT ArpVersion(ARP_VERSION_MAJOR, ARP_VERSION_MINOR, ARP_VERSION_PATCH, ARP_VERSION_BUILD, ARP_VERSION_STATE, ARP_VERSION_NAME)
106
113#define ARP_VERSION_BUILT ArpVersion(ARP_VERSION_MAJOR, ARP_VERSION_MINOR, ARP_VERSION_PATCH, ARP_VERSION_BUILD, ARP_VERSION_STATE, ARP_VERSION_NAME)
114
132#define ARP_ABI_VERSION_CURRENT ArpVersion(ARP_ABI_VERSION_MAJOR, ARP_ABI_VERSION_MINOR, ARP_ABI_VERSION_PATCH, "", "ABI");
133
134}}} // end of namespace Arp::Base::Core
135
136namespace Arp {
139}
This class compounds Arp build version and infos.
Definition: ArpVersion.hpp:21
ArpVersion(const ArpVersion &arg)
Default copy constructor.
~ArpVersion(void)
Default destructor.
ArpVersion(ArpVersion &&arg) noexcept
Default move constructor.
ArpVersion(void)
Default constructor.
ArpVersion & operator=(ArpVersion &&arg) noexcept
Default move-assignment operator.
ArpVersion & operator=(const ArpVersion &arg)
Default copy-assignment operator.
This class represents the Arp String. The implementation is based on std::string.
Definition: String.hpp:39
This class provides versioning.
Definition: Version.hpp:19
std::uint32_t uint32
The Arp unsigned integer type of 4 byte size.
Definition: PrimitiveTypes.hpp:33
std::uint8_t uint8
The Arp unsigned integer type of 1 byte size.
Definition: PrimitiveTypes.hpp:25
Root namespace for the PLCnext API
class ARP_DEPRECATED("Use Arp::Enum<T> instead.") EnumStrings
Deprecated! The class implements an adapter for enums to define the string literals of the enum entri...
Definition: EnumStrings.hxx:38