di 0.1.0
Loading...
Searching...
No Matches
vformat_encoded.h
Go to the documentation of this file.
1#pragma once
2
8#include "di/meta/core.h"
9#include "di/meta/vocab.h"
10#include "di/util/move.h"
11
12namespace di::fmt {
13namespace detail {
14 template<concepts::Encoding Enc>
15 struct VFormatEncodedFunction {
16 using View = container::string::StringViewImpl<Enc>;
17 using Str = container::string::StringImpl<Enc>;
18
20
21 template<concepts::FormatArg Arg>
22 constexpr auto operator()(View format, FormatArgs<Arg> args) const -> R {
23 auto context = FormatContext<Enc> {};
24 if constexpr (concepts::FallibleAllocator<DefaultAllocator>) {
25 DI_TRY(vformat_encoded_context<Enc>(format, util::move(args), context));
26 } else {
27 DI_ASSERT(vformat_encoded_context<Enc>(format, util::move(args), context));
28 }
29 return util::move(context).output();
30 }
31 };
32}
33
34template<concepts::Encoding Enc>
35constexpr inline auto vformat_encoded = detail::VFormatEncodedFunction<Enc> {};
36}
#define DI_ASSERT(...)
Definition assert_bool.h:7
#define DI_TRY(...)
Definition monad_try.h:13
Definition bounded_format_context.h:7
constexpr auto format
Definition format.h:7
constexpr auto vformat_encoded_context
Definition vformat_encoded_context.h:61
constexpr auto vformat_encoded
Definition vformat_encoded.h:35
detail::ConditionalHelper< value, T, U >::Type Conditional
Definition core.h:88
Expected< T, Error > Result
Definition result.h:8