9#ifndef HPP_ALIB_LANG_FORMAT_FORMATTER
10#define HPP_ALIB_LANG_FORMAT_FORMATTER 1
12#if !defined(HPP_ALIB_LANG_FORMAT_FWDS)
19 #if !defined (HPP_ALIB_THREADS_THREADLOCK)
25#if !defined(HPP_ALIB_STRINGS_NUMBERFORMAT)
29#if !defined (HPP_ALIB_STRINGS_SUBSTRING)
34 #if !defined (HPP_ALIB_THREADS_THREADLOCK)
38 #if !defined (HPP_ALIB_LANG_OWNER)
43namespace alib {
namespace lang::format {
66 #if !defined(ALIB_DOX)
143 std::shared_ptr<Formatter>
Next;
201#if !ALIB_THREADS || defined(ALIB_DOX)
239 template <
typename... TArgs>
244 constexpr bool Argument_has_type_Boxes=
245 (
sizeof...(TArgs) == 1)
248 static_assert( !Argument_has_type_Boxes,
249 "To pass a container of type Boxes to a formatter, use method FormatArgs." );
254 boxes.
Add( std::forward<TArgs>( args )... );
279 "FMT",
"Formatter not acquired." ) )
295 "FMT",
"Formatter not acquired." ) )
425 const String& formatString,
427 int startArgument ) = 0;
#define ALIB_IFN_THREADS(...)
#define ALIB_ASSERT_MODULE(modulename)
#define ALIB_IF_THREADS(...)
#define ATMP_ISOF( T, TBase)
#define ALIB_ASSERT_ERROR(cond,...)
#define ALIB_DBG_PREVENT_RECURSIVE_METHOD_CALLS_MEMBER_DECL
std::shared_ptr< lang::format::Formatter > SPFormatter