Parcourir la source

LibCrypto: Add Formatter<SignedBigInteger>

Useful for seeing SignedBigInteger values in test failure messages.
Nico Weber il y a 3 ans
Parent
commit
ec37eadb39

+ 7 - 0
Userland/Libraries/LibCrypto/BigInt/SignedBigInteger.cpp

@@ -308,3 +308,10 @@ bool SignedBigInteger::operator>=(const SignedBigInteger& other) const
 }
 
 }
+
+ErrorOr<void> AK::Formatter<Crypto::SignedBigInteger>::format(FormatBuilder& fmtbuilder, const Crypto::SignedBigInteger& value)
+{
+    if (value.is_negative())
+        TRY(fmtbuilder.put_string("-"));
+    return Formatter<Crypto::UnsignedBigInteger>::format(fmtbuilder, value.unsigned_value());
+}

+ 5 - 0
Userland/Libraries/LibCrypto/BigInt/SignedBigInteger.h

@@ -143,6 +143,11 @@ struct SignedDivisionResult {
 
 }
 
+template<>
+struct AK::Formatter<Crypto::SignedBigInteger> : AK::Formatter<Crypto::UnsignedBigInteger> {
+    ErrorOr<void> format(FormatBuilder&, Crypto::SignedBigInteger const&);
+};
+
 inline Crypto::SignedBigInteger
 operator""_sbigint(const char* string, size_t length)
 {