diff options
| author | Andre Heinecke <[email protected]> | 2016-07-14 15:01:33 +0000 | 
|---|---|---|
| committer | Andre Heinecke <[email protected]> | 2016-07-14 15:02:38 +0000 | 
| commit | 41de1ab904eaddffb2de17b1de8ef41e462daabe (patch) | |
| tree | bfcd78597f03440943d15e1e84f28cef37cca0d3 /lang/cpp/src/engineinfo.h | |
| parent | Qt: Fix usage of ignore-invalid-option in tests (diff) | |
| download | gpgme-41de1ab904eaddffb2de17b1de8ef41e462daabe.tar.gz gpgme-41de1ab904eaddffb2de17b1de8ef41e462daabe.zip | |
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.
Diffstat (limited to 'lang/cpp/src/engineinfo.h')
| -rw-r--r-- | lang/cpp/src/engineinfo.h | 56 | 
1 files changed, 56 insertions, 0 deletions
| diff --git a/lang/cpp/src/engineinfo.h b/lang/cpp/src/engineinfo.h index 4de9884f..72e125c3 100644 --- a/lang/cpp/src/engineinfo.h +++ b/lang/cpp/src/engineinfo.h @@ -28,6 +28,8 @@  #include <memory>  #include <algorithm> +#include <string> +#include <iostream>  namespace GpgME  { @@ -35,6 +37,59 @@ namespace GpgME  class GPGMEPP_EXPORT EngineInfo  {  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();      explicit EngineInfo(gpgme_engine_info_t engine); @@ -55,6 +110,7 @@ public:      Protocol protocol() const;      const char *fileName() const;      const char *version() const; +    Version engineVersion() const;      const char *requiredVersion() const;      const char *homeDirectory() const; | 
