Преглед изворни кода

AK: Add StringBuilder::appendff using the new format.

StringBuilder::appendf was already used, thus this name. If we some day
replace all usages of printf, we could rename this method.
asynts пре 4 година
родитељ
комит
e5497a326a
3 измењених фајлова са 12 додато и 4 уклоњено
  1. 4 1
      AK/Format.h
  2. 6 1
      AK/StringBuilder.h
  3. 2 2
      Kernel/UserOrKernelBuffer.cpp

+ 4 - 1
AK/Format.h

@@ -100,4 +100,7 @@ String format(StringView fmtstr, const Parameters&... parameters)
     return Detail::Format::format(fmtstr, formatters);
 }
 
-}
+template<typename... Parameters>
+void StringBuilder::appendff(StringView fmtstr, const Parameters&... parameters) { AK::format(*this, fmtstr, parameters...); }
+
+} // namespace AK

+ 6 - 1
AK/StringBuilder.h

@@ -28,6 +28,7 @@
 
 #include <AK/ByteBuffer.h>
 #include <AK/Forward.h>
+#include <AK/StringView.h>
 #include <stdarg.h>
 
 namespace AK {
@@ -37,7 +38,7 @@ public:
     using OutputType = String;
 
     explicit StringBuilder(size_t initial_capacity = 16);
-    ~StringBuilder() {}
+    ~StringBuilder() { }
 
     void append(const StringView&);
     void append(const Utf32View&);
@@ -47,6 +48,10 @@ public:
     void appendf(const char*, ...);
     void appendvf(const char*, va_list);
 
+    // Implemented in <AK/Format.h> to break circular dependency.
+    template<typename... Parameters>
+    void appendff(StringView fmtstr, const Parameters&...);
+
     String build() const;
     String to_string() const;
     ByteBuffer to_byte_buffer() const;

+ 2 - 2
Kernel/UserOrKernelBuffer.cpp

@@ -46,7 +46,7 @@ String UserOrKernelBuffer::copy_into_string(size_t size) const
         return data_copy;
     }
 
-    return String({ m_buffer, size });
+    return String(ReadonlyBytes { m_buffer, size });
 }
 
 bool UserOrKernelBuffer::write(const void* src, size_t offset, size_t len)
@@ -80,7 +80,7 @@ bool UserOrKernelBuffer::memset(int value, size_t offset, size_t len)
 
     if (is_user_address(VirtualAddress(m_buffer)))
         return memset_user(m_buffer + offset, value, len);
-    
+
     ::memset(m_buffer + offset, value, len);
     return true;
 }