/* * Copyright (c) 2023, Tim Flynn * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include #include #include #include namespace JS { class ThrowableStringBuilder : private AK::StringBuilder { public: explicit ThrowableStringBuilder(VM&); ThrowCompletionOr append(char); ThrowCompletionOr append(StringView); ThrowCompletionOr append(Utf16View const&); ThrowCompletionOr append_code_point(u32 value); ThrowCompletionOr to_string() const; template ThrowCompletionOr appendff(CheckedFormatString&& fmtstr, Parameters const&... parameters) { AK::VariadicFormatParams variadic_format_params { parameters... }; TRY_OR_THROW_OOM(m_vm, vformat(*this, fmtstr.view(), variadic_format_params)); return {}; } using AK::StringBuilder::is_empty; using AK::StringBuilder::string_view; using AK::StringBuilder::trim; private: VM& m_vm; }; }