Prechádzať zdrojové kódy

AK: Deduplicate formatting hexadecimal values

Both calls essentially only differ in one boolean, which dictates
whether to print the value in uppercase or lowercase.

Move the long function call into a new function and pass in the
"uppercase" boolean seperately to avoid having to write everything
twice.
Tim Schumacher 3 rokov pred
rodič
commit
fbfa378e74
1 zmenil súbory, kde vykonal 8 pridanie a 6 odobranie
  1. 8 6
      AK/PrintfImplementation.h

+ 8 - 6
AK/PrintfImplementation.h

@@ -388,17 +388,19 @@ struct PrintfImpl {
     {
     {
         return print_octal_number(m_putch, m_bufptr, NextArgument<u32>()(ap), state.alternate_form, state.left_pad, state.zero_pad, state.field_width, state.has_precision, state.precision);
         return print_octal_number(m_putch, m_bufptr, NextArgument<u32>()(ap), state.alternate_form, state.left_pad, state.zero_pad, state.field_width, state.has_precision, state.precision);
     }
     }
-    ALWAYS_INLINE int format_x(ModifierState const& state, ArgumentListRefT ap) const
+    ALWAYS_INLINE int format_unsigned_hex(ModifierState const& state, ArgumentListRefT ap, bool uppercase) const
     {
     {
         if (state.long_qualifiers >= 2)
         if (state.long_qualifiers >= 2)
-            return print_hex(m_putch, m_bufptr, NextArgument<u64>()(ap), false, state.alternate_form, state.left_pad, state.zero_pad, state.field_width, state.has_precision, state.precision);
-        return print_hex(m_putch, m_bufptr, NextArgument<u32>()(ap), false, state.alternate_form, state.left_pad, state.zero_pad, state.field_width, state.has_precision, state.precision);
+            return print_hex(m_putch, m_bufptr, NextArgument<u64>()(ap), uppercase, state.alternate_form, state.left_pad, state.zero_pad, state.field_width, state.has_precision, state.precision);
+        return print_hex(m_putch, m_bufptr, NextArgument<u32>()(ap), uppercase, state.alternate_form, state.left_pad, state.zero_pad, state.field_width, state.has_precision, state.precision);
+    }
+    ALWAYS_INLINE int format_x(ModifierState const& state, ArgumentListRefT ap) const
+    {
+        return format_unsigned_hex(state, ap, false);
     }
     }
     ALWAYS_INLINE int format_X(ModifierState const& state, ArgumentListRefT ap) const
     ALWAYS_INLINE int format_X(ModifierState const& state, ArgumentListRefT ap) const
     {
     {
-        if (state.long_qualifiers >= 2)
-            return print_hex(m_putch, m_bufptr, NextArgument<u64>()(ap), true, state.alternate_form, state.left_pad, state.zero_pad, state.field_width, state.has_precision, state.precision);
-        return print_hex(m_putch, m_bufptr, NextArgument<u32>()(ap), true, state.alternate_form, state.left_pad, state.zero_pad, state.field_width, state.has_precision, state.precision);
+        return format_unsigned_hex(state, ap, true);
     }
     }
     ALWAYS_INLINE int format_n(ModifierState const&, ArgumentListRefT ap) const
     ALWAYS_INLINE int format_n(ModifierState const&, ArgumentListRefT ap) const
     {
     {