|
|
|
@ -32,6 +32,8 @@
@@ -32,6 +32,8 @@
|
|
|
|
|
|
|
|
|
|
#include <QByteArray> |
|
|
|
|
#include <QHash> |
|
|
|
|
#include <QSharedData> |
|
|
|
|
#include <QSharedDataPointer> |
|
|
|
|
#include <QString> |
|
|
|
|
|
|
|
|
|
template <int N> |
|
|
|
@ -43,11 +45,11 @@ public:
@@ -43,11 +45,11 @@ public:
|
|
|
|
|
Digest32() = default; |
|
|
|
|
|
|
|
|
|
Digest32(const UnderlyingType &nativeDigest) |
|
|
|
|
: m_valid {true} |
|
|
|
|
, m_nativeDigest {nativeDigest} |
|
|
|
|
{ |
|
|
|
|
m_dataPtr->valid = true; |
|
|
|
|
m_dataPtr->nativeDigest = nativeDigest; |
|
|
|
|
const QByteArray raw = QByteArray::fromRawData(nativeDigest.data(), length()); |
|
|
|
|
m_hashString = QString::fromLatin1(raw.toHex()); |
|
|
|
|
m_dataPtr->hashString = QString::fromLatin1(raw.toHex()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static constexpr int length() |
|
|
|
@ -57,12 +59,12 @@ public:
@@ -57,12 +59,12 @@ public:
|
|
|
|
|
|
|
|
|
|
bool isValid() const |
|
|
|
|
{ |
|
|
|
|
return m_valid; |
|
|
|
|
return m_dataPtr->valid; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
operator UnderlyingType() const |
|
|
|
|
{ |
|
|
|
|
return m_nativeDigest; |
|
|
|
|
return m_dataPtr->nativeDigest; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static Digest32 fromString(const QString &digestString) |
|
|
|
@ -75,22 +77,27 @@ public:
@@ -75,22 +77,27 @@ public:
|
|
|
|
|
return {}; |
|
|
|
|
|
|
|
|
|
Digest32 result; |
|
|
|
|
result.m_valid = true; |
|
|
|
|
result.m_hashString = digestString; |
|
|
|
|
result.m_nativeDigest.assign(raw.constData()); |
|
|
|
|
result.m_dataPtr->valid = true; |
|
|
|
|
result.m_dataPtr->hashString = digestString; |
|
|
|
|
result.m_dataPtr->nativeDigest.assign(raw.constData()); |
|
|
|
|
|
|
|
|
|
return result; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
QString toString() const |
|
|
|
|
{ |
|
|
|
|
return m_hashString; |
|
|
|
|
return m_dataPtr->hashString; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private: |
|
|
|
|
bool m_valid = false; |
|
|
|
|
UnderlyingType m_nativeDigest; |
|
|
|
|
QString m_hashString; |
|
|
|
|
struct Data : public QSharedData |
|
|
|
|
{ |
|
|
|
|
bool valid = false; |
|
|
|
|
UnderlyingType nativeDigest; |
|
|
|
|
QString hashString; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
QSharedDataPointer<Data> m_dataPtr {new Data}; |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
template <int N> |
|
|
|
|