#pragma once #include #include #include namespace AK { class StringBuilder { public: using OutputType = String; explicit StringBuilder(int initial_capacity = 16); ~StringBuilder() {} void append(const StringView&); void append(char); void append(const char*, int); void appendf(const char*, ...); void appendvf(const char*, va_list); String build() { return to_string(); } String to_string(); ByteBuffer to_byte_buffer(); StringView string_view() const; void clear(); int length() const { return m_length; } void trim(int count) { m_length -= count; } private: void will_append(int); ByteBuffer m_buffer; int m_length { 0 }; }; } using AK::StringBuilder;