PLCnext API Documentation 24.0.0.71
BasicVersion.hpp
1
2//
3// Copyright PHOENIX CONTACT Electronics GmbH
4//
6#pragma once
8#include "Arp/System/Core/BasicString.hxx"
9
10#ifndef ARP_INSIDE_ARP_H
11 #error Never include 'BasicVersion.hxx' directly, just include 'Arp.h'
12#endif
13
14namespace Arp
15{
16
36{
37public: // typedefs
40
41public: // construction/destruction
43 BasicVersion(void) = default;
44
50 BasicVersion(uint8 majorVersion, const String& state = String(), const String& name = String());
51
58 BasicVersion(uint8 majorVersion, uint8 minorVersion, const String& state = String(), const String& name = String());
59
66 BasicVersion(uint8 majorVersion, uint8 minorVersion, uint8 patchVersion, const String& state = String(), const String& name = String());
67
75 BasicVersion(uint8 majorVersion, uint8 minorVersion, uint8 patchVersion, uint32 buildVersion, const String& state = String(), const String& name = String());
76
79 BasicVersion(const BasicVersion& arg) = default;
80
83 BasicVersion(BasicVersion&& arg) = default;
84
88 BasicVersion& operator=(const BasicVersion& arg) = default;
89
91 virtual ~BasicVersion(void) = default; // TODO(OR): remove virtual here
92
93public: // static factory operations
98 static BasicVersion Parse(const String& input);
99
104 static bool TryParse(const String& input, BasicVersion& result);
105
106public: // compare operators
110 bool operator==(const BasicVersion& arg)const;
111
115 bool operator!=(const BasicVersion& arg)const;
116
120 bool operator>(const BasicVersion& arg)const;
121
125 bool operator<(const BasicVersion& arg)const;
126
130 bool operator>=(const BasicVersion& arg)const;
131
135 bool operator<=(const BasicVersion& arg)const;
136
137public: // setter/getter operations
140 String GetName(void)const;
141
144 uint8 GetMajor(void)const;
145
148 uint8 GetMinor(void)const;
149
152 uint8 GetPatch(void)const;
153
156 uint32 GetBuild(void)const;
157
160 String GetState(void)const;
161
169
170public: // operations
173 String ToString(void) const;
174
175private: // static methods
176 static bool TryParseFullVersion(const String& input, BasicVersion& result);
177 static bool TryParseInternalVersion(const String& input, BasicVersion& result);
178
179private: // fields
180 String name;
181 uint8 majorVersion = 0;
182 uint8 minorVersion = 0;
183 uint8 patchVersion = 0;
184 uint32 buildVersion = 0;
185 String state;
186};
187
189// inline methods of class BasicVersion
190
191inline BasicVersion::BasicVersion(uint8 majorVersionArg, const String& stateArg, const String& nameArg)
192 : name(nameArg), majorVersion(majorVersionArg), minorVersion(0), patchVersion(0), buildVersion(0), state(stateArg)
193{
194}
195
196inline BasicVersion::BasicVersion(uint8 majorVersionArg, uint8 minorVersionArg, const String& stateArg, const String& nameArg)
197 : name(nameArg), majorVersion(majorVersionArg), minorVersion(minorVersionArg), patchVersion(0), buildVersion(0), state(stateArg)
198{
199}
200
201inline BasicVersion::BasicVersion(uint8 majorVersionArg, uint8 minorVersionArg, uint8 patchVersionArg, const String& stateArg, const String& nameArg)
202 : name(nameArg), majorVersion(majorVersionArg), minorVersion(minorVersionArg), patchVersion(patchVersionArg), buildVersion(0), state(stateArg)
203{
204}
205
206inline BasicVersion::BasicVersion(uint8 majorVersionArg, uint8 minorVersionArg, uint8 patchVersionArg, uint32 buildVersionArg, const String& stateArg, const String& nameArg)
207 : name(nameArg), majorVersion(majorVersionArg), minorVersion(minorVersionArg), patchVersion(patchVersionArg), buildVersion(buildVersionArg), state(stateArg)
208{
209}
210
211inline bool BasicVersion::operator==(const BasicVersion& arg)const
212{
213 return (this->name == arg.name)
214 && (this->majorVersion == arg.majorVersion)
215 && (this->minorVersion == arg.minorVersion)
216 && (this->patchVersion == arg.patchVersion)
217 && (this->buildVersion == arg.buildVersion);
218}
219
220inline bool BasicVersion::operator!=(const BasicVersion& arg)const
221{
222 return !(*this == arg);
223}
224
225inline bool BasicVersion::operator>(const BasicVersion& arg)const
226{
227 bool result = false;
228
229 if (this->majorVersion > arg.majorVersion)
230 {
231 result = true;
232 }
233 else if ((this->majorVersion == arg.majorVersion) && (this->minorVersion > arg.minorVersion))
234 {
235 result = true;
236 }
237 else if ((this->majorVersion == arg.majorVersion) && (this->minorVersion == arg.minorVersion) && (this->patchVersion > arg.patchVersion))
238 {
239 result = true;
240 }
241 else if ((this->majorVersion == arg.majorVersion) && (this->minorVersion == arg.minorVersion) && (this->patchVersion == arg.patchVersion) && (this->buildVersion > arg.buildVersion))
242 {
243 result = true;
244 }
245
246 return result;
247}
248
249inline bool BasicVersion::operator<(const BasicVersion& arg)const
250{
251 bool result = false;
252
253 if (this->majorVersion < arg.majorVersion)
254 {
255 result = true;
256 }
257 else if ((this->majorVersion == arg.majorVersion) && (this->minorVersion < arg.minorVersion))
258 {
259 result = true;
260 }
261 else if ((this->majorVersion == arg.majorVersion) && (this->minorVersion == arg.minorVersion) && (this->patchVersion < arg.patchVersion))
262 {
263 result = true;
264 }
265 else if ((this->majorVersion == arg.majorVersion) && (this->minorVersion == arg.minorVersion) && (this->patchVersion == arg.patchVersion) && (this->buildVersion < arg.buildVersion))
266 {
267 result = true;
268 }
269
270 return result;
271}
272
273inline bool BasicVersion::operator>=(const BasicVersion& arg)const
274{
275 bool result = false;
276
277 if ((*this > arg) || (*this == arg))
278 {
279 result = true;
280 }
281
282 return result;
283}
284
285inline bool BasicVersion::operator<=(const BasicVersion& arg)const
286{
287 bool result = false;
288
289 if ((*this < arg) || (*this == arg))
290 {
291 result = true;
292 }
293
294 return result;
295}
296
298{
299 return this->name;
300}
301
303{
304 return this->majorVersion;
305}
306
308{
309 return this->minorVersion;
310}
311
313{
314 return this->patchVersion;
315}
316
318{
319 return this->buildVersion;
320}
321
323{
324 return this->state;
325}
326
327} // end of namespace Arp
This class represents the version of a special SDK or Arp build.
Definition: BasicVersion.hpp:36
const BasicVersion & GetBuildVersion() const
Gets the version number object
String GetState(void) const
Gets the state of this version.
Definition: BasicVersion.hpp:322
BasicVersion(BasicVersion &&arg)=default
The default move constructor
String GetName(void) const
Gets the name of this released version.
Definition: BasicVersion.hpp:297
bool operator!=(const BasicVersion &arg) const
Compares this instance to the given argument on unequality
Definition: BasicVersion.hpp:220
static bool TryParse(const String &input, BasicVersion &result)
Tries to parse the given input string and to create a new version from it.
bool operator==(const BasicVersion &arg) const
Compares this instance to the given argument on equality
Definition: BasicVersion.hpp:211
static BasicVersion Parse(const String &input)
Parses the given input string and creates a new version from it.
bool operator>(const BasicVersion &arg) const
Compares this instance to the given argument.
Definition: BasicVersion.hpp:225
BasicVersion & operator=(const BasicVersion &arg)=default
The default assignment operator.
BasicString< char > String
Definition: BasicVersion.hpp:39
BasicVersion(const BasicVersion &arg)=default
The default copy constructor.
bool operator<=(const BasicVersion &arg) const
Compares this instance to the given argument.
Definition: BasicVersion.hpp:285
bool operator<(const BasicVersion &arg) const
Compares this instance to the given argument.
Definition: BasicVersion.hpp:249
String ToString(void) const
Converts this version to a string as explained here BasicVersion.
BasicVersion(void)=default
The default constructor constructs an empty and zero'ed version.
uint8 GetMinor(void) const
Gets the minor version.
Definition: BasicVersion.hpp:307
uint8 GetMajor(void) const
Gets the major version.
Definition: BasicVersion.hpp:302
uint8 GetPatch(void) const
Gets the patch version.
Definition: BasicVersion.hpp:312
virtual ~BasicVersion(void)=default
The default destructor.
uint32 GetBuild(void) const
Gets the build version.
Definition: BasicVersion.hpp:317
bool operator>=(const BasicVersion &arg) const
Compares this instance to the given argument.
Definition: BasicVersion.hpp:273
std::uint32_t uint32
The Arp unsigned integer type of 4 byte size.
Definition: PrimitiveTypes.hpp:36
std::uint8_t uint8
The Arp unsigned integer type of 1 byte size.
Definition: PrimitiveTypes.hpp:28
Root namespace for the PLCnext API