8#include "Arp/System/Core/BasicString.hxx"
10#ifndef ARP_USE_ARP_SYSTEM_CORE
16#ifndef ARP_INSIDE_ARP_H
17 #error Never include 'BasicVersion.hxx' directly, just include 'Arp.h'
45 typedef BasicString<char> String;
49 BasicVersion(
void) =
default;
56 BasicVersion(
uint8 majorVersion,
const String& state = String(),
const String& name = String());
64 BasicVersion(
uint8 majorVersion,
uint8 minorVersion,
const String& state = String(),
const String& name = String());
72 BasicVersion(
uint8 majorVersion,
uint8 minorVersion,
uint8 patchVersion,
const String& state = String(),
const String& name = String());
81 BasicVersion(
uint8 majorVersion,
uint8 minorVersion,
uint8 patchVersion,
uint32 buildVersion,
const String& state = String(),
const String& name = String());
85 BasicVersion(
const BasicVersion& arg) =
default;
89 BasicVersion(BasicVersion&& arg) =
default;
94 BasicVersion& operator=(
const BasicVersion& arg) =
default;
97 virtual ~BasicVersion(
void) =
default;
104 static BasicVersion Parse(
const String& input);
110 static bool TryParse(
const String& input, BasicVersion& result);
116 bool operator==(
const BasicVersion& arg)
const;
121 bool operator!=(
const BasicVersion& arg)
const;
126 bool operator>(
const BasicVersion& arg)
const;
131 bool operator<(
const BasicVersion& arg)
const;
136 bool operator>=(
const BasicVersion& arg)
const;
141 bool operator<=(
const BasicVersion& arg)
const;
146 String GetName(
void)
const;
150 uint8 GetMajor(
void)
const;
154 uint8 GetMinor(
void)
const;
158 uint8 GetPatch(
void)
const;
162 uint32 GetBuild(
void)
const;
166 String GetState(
void)
const;
174 const BasicVersion& GetBuildVersion()
const;
179 String ToString(
void)
const;
182 static bool TryParseFullVersion(
const String& input, BasicVersion& result);
183 static bool TryParseInternalVersion(
const String& input, BasicVersion& result);
187 uint8 majorVersion = 0;
188 uint8 minorVersion = 0;
189 uint8 patchVersion = 0;
197inline BasicVersion::BasicVersion(
uint8 majorVersionArg,
const String& stateArg,
const String& nameArg)
198 : name(nameArg), majorVersion(majorVersionArg), minorVersion(0), patchVersion(0), buildVersion(0), state(stateArg)
202inline BasicVersion::BasicVersion(
uint8 majorVersionArg,
uint8 minorVersionArg,
const String& stateArg,
const String& nameArg)
203 : name(nameArg), majorVersion(majorVersionArg), minorVersion(minorVersionArg), patchVersion(0), buildVersion(0), state(stateArg)
207inline BasicVersion::BasicVersion(
uint8 majorVersionArg,
uint8 minorVersionArg,
uint8 patchVersionArg,
const String& stateArg,
const String& nameArg)
208 : name(nameArg), majorVersion(majorVersionArg), minorVersion(minorVersionArg), patchVersion(patchVersionArg), buildVersion(0), state(stateArg)
212inline BasicVersion::BasicVersion(
uint8 majorVersionArg,
uint8 minorVersionArg,
uint8 patchVersionArg,
uint32 buildVersionArg,
const String& stateArg,
const String& nameArg)
213 : name(nameArg), majorVersion(majorVersionArg), minorVersion(minorVersionArg), patchVersion(patchVersionArg), buildVersion(buildVersionArg), state(stateArg)
217inline bool BasicVersion::operator==(
const BasicVersion& arg)
const
219 return (this->name == arg.name)
220 && (this->majorVersion == arg.majorVersion)
221 && (this->minorVersion == arg.minorVersion)
222 && (this->patchVersion == arg.patchVersion)
223 && (this->buildVersion == arg.buildVersion);
226inline bool BasicVersion::operator!=(
const BasicVersion& arg)
const
228 return !(*
this == arg);
231inline bool BasicVersion::operator>(
const BasicVersion& arg)
const
235 if (this->majorVersion > arg.majorVersion)
239 else if ((this->majorVersion == arg.majorVersion) && (this->minorVersion > arg.minorVersion))
243 else if ((this->majorVersion == arg.majorVersion) && (this->minorVersion == arg.minorVersion) && (this->patchVersion > arg.patchVersion))
247 else if ((this->majorVersion == arg.majorVersion) && (this->minorVersion == arg.minorVersion) && (this->patchVersion == arg.patchVersion) && (this->buildVersion > arg.buildVersion))
255inline bool BasicVersion::operator<(
const BasicVersion& arg)
const
259 if (this->majorVersion < arg.majorVersion)
263 else if ((this->majorVersion == arg.majorVersion) && (this->minorVersion < arg.minorVersion))
267 else if ((this->majorVersion == arg.majorVersion) && (this->minorVersion == arg.minorVersion) && (this->patchVersion < arg.patchVersion))
271 else if ((this->majorVersion == arg.majorVersion) && (this->minorVersion == arg.minorVersion) && (this->patchVersion == arg.patchVersion) && (this->buildVersion < arg.buildVersion))
279inline bool BasicVersion::operator>=(
const BasicVersion& arg)
const
283 if ((*
this > arg) || (*
this == arg))
291inline bool BasicVersion::operator<=(
const BasicVersion& arg)
const
295 if ((*
this < arg) || (*
this == arg))
303inline BasicVersion::String BasicVersion::GetName()
const
308inline uint8 BasicVersion::GetMajor()
const
310 return this->majorVersion;
313inline uint8 BasicVersion::GetMinor()
const
315 return this->minorVersion;
318inline uint8 BasicVersion::GetPatch()
const
320 return this->patchVersion;
323inline uint32 BasicVersion::GetBuild()
const
325 return this->buildVersion;
328inline BasicVersion::String BasicVersion::GetState()
const
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