1
0
mirror of https://github.com/SerenityOS/serenity synced 2024-07-09 11:00:46 +00:00

AK: Add outf, warnf and dbgf.

This commit is contained in:
asynts 2020-09-23 14:45:41 +02:00 committed by Andreas Kling
parent b7a4c4482f
commit 5ed15a49f2
3 changed files with 33 additions and 0 deletions

View File

@ -142,6 +142,12 @@ void vformat(StringBuilder& builder, StringView fmtstr, AK::Span<const TypeErase
vformat(builder, fmtstr.substring_view(closing + 1), parameters, argument_index);
}
void vformat(const LogStream& stream, StringView fmtstr, Span<const TypeErasedParameter> parameters)
{
StringBuilder builder;
vformat(builder, fmtstr, parameters);
stream << builder.to_string();
}
bool Formatter<StringView>::parse(StringView flags)
{

View File

@ -92,5 +92,6 @@ Array<TypeErasedParameter, sizeof...(Parameters)> make_type_erased_parameters(co
}
void vformat(StringBuilder& builder, StringView fmtstr, Span<const TypeErasedParameter>, size_t argument_index = 0);
void vformat(const LogStream& stream, StringView fmtstr, Span<const TypeErasedParameter>);
} // namespace AK

View File

@ -26,6 +26,7 @@
#pragma once
#include <AK/Format.h>
#include <AK/Forward.h>
#include <AK/Types.h>
#include <AK/kmalloc.h>
@ -206,13 +207,38 @@ DebugLogStream klog();
void dump_bytes(ReadonlyBytes);
#ifndef KERNEL
template<typename... Parameters>
void outf(StringView fmtstr, const Parameters&... parameters)
{
const auto type_erased_parameters = make_type_erased_parameters(parameters...);
vformat(out(), fmtstr, type_erased_parameters);
}
template<typename... Parameters>
void warnf(StringView fmtstr, const Parameters&... parameters)
{
const auto type_erased_parameters = make_type_erased_parameters(parameters...);
vformat(warn(), fmtstr, type_erased_parameters);
}
#endif
template<typename... Parameters>
void dbgf(StringView fmtstr, const Parameters&... parameters)
{
const auto type_erased_parameters = make_type_erased_parameters(parameters...);
vformat(dbg(), fmtstr, type_erased_parameters);
}
}
using AK::dbg;
using AK::dbgf;
using AK::klog;
using AK::LogStream;
#if !defined(KERNEL)
using AK::out;
using AK::outf;
using AK::warn;
using AK::warnf;
#endif