8#ifndef H_ALIB_STRINGS_STDFORMATTER
9#define H_ALIB_STRINGS_STDFORMATTER
16#if __has_include(<format>)
19# include <fmt/format.h>
33# if __has_include(<format>)
49template<
typename TChar>
51 : formatter<std::basic_string_view<TChar>, TChar> {
60 template<
typename TContext>
63 return formatter<std::basic_string_view<TChar>, TChar>
::format(
64 static_cast<std::basic_string_view<TChar>
>(str), ctx);
76template<
typename TChar>
78 : formatter<std::basic_string_view<TChar>, TChar> {
87 template<
typename TContext>
90 return formatter<std::basic_string_view<TChar>, TChar>
::format(
91 static_cast<std::basic_string_view<TChar>
>(str), ctx);
103template<
typename TChar,
typename TAllocator>
105 : formatter<std::basic_string_view<TChar>, TChar> {
113 template<
typename TContext>
115 return formatter<std::basic_string_view<TChar>, TChar>
::format(
116 static_cast<std::basic_string_view<TChar>
>(str), ctx);
128template<
typename TChar>
130 : formatter<std::basic_string_view<TChar>, TChar> {
139 template<
typename TContext>
142 return formatter<std::basic_string_view<TChar>, TChar>
::format(
143 static_cast<std::basic_string_view<TChar>
>(str), ctx);
155template<
typename TChar, alib::
integer TCapacity,
typename TAllocator>
157 : formatter<std::basic_string_view<TChar>, TChar> {
166 template<
typename TContext>
168 TContext& ctx )
const {
170 return formatter<std::basic_string_view<TChar>, TChar>
::format(
171 static_cast<std::basic_string_view<TChar>
>(str), ctx);
204template<
typename TAppendable>
215template<
typename TAppendable>
224# if __has_include(<format>)
246template <
typename TAppendable,
typename TChar>
248struct formatter<
alib::strings::Appendable<TAppendable>, TChar>
249 : formatter<std::basic_string_view<TChar>, TChar> {
256 template <
typename FormatContext>
257 auto format(
const alib::strings::Appendable<TAppendable>& wrapper,
258 FormatContext& ctx)
const {
260 buf.
Append(wrapper.appendable);
262 return formatter<std::basic_string_view<TChar>, TChar>
::format(
263 static_cast<std::basic_string_view<TChar>
>(buf), ctx);
310template<
typename TChar,
typename... TArgs>
323 ,
arguments(std::make_tuple(std::forward<TArgs>(args)...)) {}
330template<
typename TChar,
typename... TArgs>
335template<
typename TAllocator,
typename... Args>
343 std::back_insert_iterator<TAString<char, TAllocator>> it(target);
345 #if __has_include(<format>)
346 namespace f_temp=std;
348 namespace f_temp=fmt;
352 std::apply( [&](
auto&&... a) {
353 f_temp::vformat_to(it, fmtpackage.
format,
354 f_temp::make_format_args(
static_cast<const decltype(a)&
>(a)...));
362template<
typename TAllocator,
typename... Args>
370 std::back_insert_iterator<TAString<wchar_t, TAllocator>> it(target);
376 vformat_to(it, fmtpackage.
format,
377 make_wformat_args(
static_cast<const decltype(a)&
>(a)...));
389 template<
typename... Args>
393 template<
typename... Args>
397 template<
typename... Args>
401 template<
typename TAppendable>
TAString & Append(const TCharSrc *src, integer srcLength)
strings::TStdFormat< wchar_t, Args... > WStdFormat
Type alias in namespace alib.
strings::TStdFormat< character, Args... > StdFormat
Type alias in namespace alib.
strings::TStdFormat< char, Args... > NStdFormat
Type alias in namespace alib.
characters::character character
Type alias in namespace alib.
strings::Appendable< TAppendable > Appendable
Type alias in namespace alib.
Appendable(const TAppendable &pAppendable)
const TAppendable & appendable
A reference to the wrapped appendable.