mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 15:17:36 +00:00
AK: Format the contents of NNRP<T> if T is formattable
This commit is contained in:
parent
ff038f306a
commit
08fc42002c
2 changed files with 12 additions and 0 deletions
|
@ -39,6 +39,9 @@ inline constexpr bool HasFormatter = true;
|
||||||
template<typename T>
|
template<typename T>
|
||||||
inline constexpr bool HasFormatter<T, typename Formatter<T>::__no_formatter_defined> = false;
|
inline constexpr bool HasFormatter<T, typename Formatter<T>::__no_formatter_defined> = false;
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
concept Formattable = HasFormatter<T>;
|
||||||
|
|
||||||
constexpr size_t max_format_arguments = 256;
|
constexpr size_t max_format_arguments = 256;
|
||||||
|
|
||||||
struct TypeErasedParameter {
|
struct TypeErasedParameter {
|
||||||
|
|
|
@ -228,7 +228,16 @@ inline NonnullRefPtr<T> adopt_ref(T& object)
|
||||||
return NonnullRefPtr<T>(NonnullRefPtr<T>::Adopt, object);
|
return NonnullRefPtr<T>(NonnullRefPtr<T>::Adopt, object);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<Formattable T>
|
||||||
|
struct Formatter<NonnullRefPtr<T>> : Formatter<T> {
|
||||||
|
ErrorOr<void> format(FormatBuilder& builder, NonnullRefPtr<T> const& value)
|
||||||
|
{
|
||||||
|
return Formatter<T>::format(builder, *value);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
|
requires(!HasFormatter<T>)
|
||||||
struct Formatter<NonnullRefPtr<T>> : Formatter<T const*> {
|
struct Formatter<NonnullRefPtr<T>> : Formatter<T const*> {
|
||||||
ErrorOr<void> format(FormatBuilder& builder, NonnullRefPtr<T> const& value)
|
ErrorOr<void> format(FormatBuilder& builder, NonnullRefPtr<T> const& value)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue