diff --git a/AK/StringBuilder.cpp b/AK/StringBuilder.cpp index 52ba4ffda7..203eb28112 100644 --- a/AK/StringBuilder.cpp +++ b/AK/StringBuilder.cpp @@ -56,6 +56,14 @@ ErrorOr StringBuilder::try_append(char ch) return {}; } +ErrorOr StringBuilder::try_append_repeated(char ch, size_t n) +{ + TRY(will_append(n)); + for (size_t i = 0; i < n; ++i) + TRY(try_append(ch)); + return {}; +} + void StringBuilder::append(StringView string) { MUST(try_append(string)); @@ -84,6 +92,11 @@ void StringBuilder::appendvf(char const* fmt, va_list ap) nullptr, fmt, ap); } +void StringBuilder::append_repeated(char ch, size_t n) +{ + MUST(try_append_repeated(ch, n)); +} + ByteBuffer StringBuilder::to_byte_buffer() const { // FIXME: Handle OOM failure. diff --git a/AK/StringBuilder.h b/AK/StringBuilder.h index 9021e79eec..1abf5cb950 100644 --- a/AK/StringBuilder.h +++ b/AK/StringBuilder.h @@ -35,6 +35,7 @@ public: return vformat(*this, fmtstr.view(), variadic_format_params); } ErrorOr try_append(char const*, size_t); + ErrorOr try_append_repeated(char, size_t); ErrorOr try_append_escaped_for_json(StringView); void append(StringView); @@ -46,6 +47,7 @@ public: void append_code_point(u32); void append(char const*, size_t); void appendvf(char const*, va_list); + void append_repeated(char, size_t); void append_as_lowercase(char); void append_escaped_for_json(StringView);