Przeglądaj źródła

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

And simplify the code _even further_!
Ali Mohammad Pur 4 lat temu
rodzic
commit
c94440860e
1 zmienionych plików z 18 dodań i 30 usunięć
  1. 18 30
      Userland/Libraries/LibCrypto/Hash/HashManager.h

+ 18 - 30
Userland/Libraries/LibCrypto/Hash/HashManager.h

@@ -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