Cpp: Add EngineInfo::Version class
* lang/cpp/src/engineinfo.cpp (EngineInfo::engineVersion): New. * lang/cpp/src/engineinfo.h (EngineInfo::engineVersion): Declare. (EngineInfo::Version): Small helper to work with versions.
This commit is contained in:
parent
e7f4c36473
commit
41de1ab904
@ -72,6 +72,11 @@ const char *GpgME::EngineInfo::version() const
|
|||||||
return isNull() ? 0 : d->info->version;
|
return isNull() ? 0 : d->info->version;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GpgME::EngineInfo::Version GpgME::EngineInfo::engineVersion() const
|
||||||
|
{
|
||||||
|
return Version(version());
|
||||||
|
}
|
||||||
|
|
||||||
const char *GpgME::EngineInfo::requiredVersion() const
|
const char *GpgME::EngineInfo::requiredVersion() const
|
||||||
{
|
{
|
||||||
return isNull() ? 0 : d->info->req_version;
|
return isNull() ? 0 : d->info->req_version;
|
||||||
|
@ -28,6 +28,8 @@
|
|||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
#include <string>
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
namespace GpgME
|
namespace GpgME
|
||||||
{
|
{
|
||||||
@ -35,6 +37,59 @@ namespace GpgME
|
|||||||
class GPGMEPP_EXPORT EngineInfo
|
class GPGMEPP_EXPORT EngineInfo
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
struct Version
|
||||||
|
{
|
||||||
|
int major, minor, patch;
|
||||||
|
|
||||||
|
Version(const std::string& version)
|
||||||
|
{
|
||||||
|
if (version.empty() ||
|
||||||
|
std::sscanf(version.c_str(), "%d.%d.%d", &major, &minor, &patch) != 3) {
|
||||||
|
major = 0;
|
||||||
|
minor = 0;
|
||||||
|
patch = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator < (const Version& other)
|
||||||
|
{
|
||||||
|
if (major < other.major)
|
||||||
|
return true;
|
||||||
|
if (minor < other.minor)
|
||||||
|
return true;
|
||||||
|
if (patch < other.patch)
|
||||||
|
return true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator < (const char* other)
|
||||||
|
{
|
||||||
|
return operator<(Version(other));
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator == (const Version& other)
|
||||||
|
{
|
||||||
|
return major == other.major
|
||||||
|
&& minor == other.minor
|
||||||
|
&& patch == other.patch;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool operator == (const char* other)
|
||||||
|
{
|
||||||
|
return operator==(Version(other));
|
||||||
|
}
|
||||||
|
|
||||||
|
friend std::ostream& operator << (std::ostream& stream, const Version& ver)
|
||||||
|
{
|
||||||
|
stream << ver.major;
|
||||||
|
stream << '.';
|
||||||
|
stream << ver.minor;
|
||||||
|
stream << '.';
|
||||||
|
stream << ver.patch;
|
||||||
|
return stream;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
EngineInfo();
|
EngineInfo();
|
||||||
explicit EngineInfo(gpgme_engine_info_t engine);
|
explicit EngineInfo(gpgme_engine_info_t engine);
|
||||||
|
|
||||||
@ -55,6 +110,7 @@ public:
|
|||||||
Protocol protocol() const;
|
Protocol protocol() const;
|
||||||
const char *fileName() const;
|
const char *fileName() const;
|
||||||
const char *version() const;
|
const char *version() const;
|
||||||
|
Version engineVersion() const;
|
||||||
const char *requiredVersion() const;
|
const char *requiredVersion() const;
|
||||||
const char *homeDirectory() const;
|
const char *homeDirectory() const;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user