LibCrypto: Use the new return-from-Variant::visit() mechanism

And simplify the code _even further_!
This commit is contained in:
Ali Mohammad Pur 2021-05-20 00:32:42 +04:30 committed by Andreas Kling
parent cdb0a08946
commit c94440860e
Notes: sideshowbarker 2024-07-18 17:45:51 +09:00

View file

@ -61,20 +61,16 @@ struct MultiHashDigestVariant {
const u8* immutable_data() const
{
const u8* data = nullptr;
m_digest.visit(
[&](const Empty&) { VERIFY_NOT_REACHED(); },
[&](const auto& value) { data = value.immutable_data(); });
return data;
return m_digest.visit(
[&](const Empty&) -> const u8* { VERIFY_NOT_REACHED(); },
[&](const auto& value) { return value.immutable_data(); });
}
size_t data_length()
{
size_t length = 0;
m_digest.visit(
[&](const Empty&) { VERIFY_NOT_REACHED(); },
[&](const auto& value) { length = value.data_length(); });
return length;
return m_digest.visit(
[&](const Empty&) -> size_t { VERIFY_NOT_REACHED(); },
[&](const auto& value) { return value.data_length(); });
}
using DigestVariant = Variant<Empty, MD5::DigestType, SHA1::DigestType, SHA256::DigestType, SHA384::DigestType, SHA512::DigestType>;
@ -109,20 +105,16 @@ public:
inline size_t digest_size() const
{
size_t result = 0;
m_algorithm.visit(
[&](const Empty&) {},
[&](const auto& hash) { result = hash.digest_size(); });
return result;
return m_algorithm.visit(
[&](const Empty&) -> size_t { return 0; },
[&](const auto& hash) { return hash.digest_size(); });
}
inline size_t block_size() const
{
size_t result = 0;
m_algorithm.visit(
[&](const Empty&) {},
[&](const auto& hash) { result = hash.block_size(); });
return result;
return m_algorithm.visit(
[&](const Empty&) -> size_t { return 0; },
[&](const auto& hash) { return hash.block_size(); });
}
inline void initialize(HashKind kind)
@ -172,11 +164,9 @@ public:
virtual DigestType peek() override
{
DigestType result = Empty {};
m_algorithm.visit(
[&](Empty&) { VERIFY_NOT_REACHED(); },
[&](auto& hash) { result = hash.peek(); });
return result;
return m_algorithm.visit(
[&](Empty&) -> DigestType { VERIFY_NOT_REACHED(); },
[&](auto& hash) -> DigestType { return hash.peek(); });
}
virtual DigestType digest() override
@ -196,11 +186,9 @@ public:
virtual String class_name() const override
{
String result;
m_algorithm.visit(
[&](const Empty&) { result = "UninitializedHashManager"; },
[&](const auto& hash) { result = hash.class_name(); });
return result;
return m_algorithm.visit(
[&](const Empty&) -> String { return "UninitializedHashManager"; },
[&](const auto& hash) { return hash.class_name(); });
}
inline bool is(HashKind kind) const