8#if !defined(ALIB_C20_MODULES) || ((ALIB_C20_MODULES != 0) && (ALIB_C20_MODULES != 1))
9# error "Symbol ALIB_C20_MODULES has to be given to the compiler as either 0 or 1"
51 integer parsePosCopy= parsePos;
52 if( (parsePos= formatString.IndexOf( ESCCharacter, parsePosCopy ) ) < 0 )
56 integer endPos= parsePos+ 1;
57 if( endPos < formatString.Length() )
60 if( formatString[endPos] == ESCCharacter )
62 formatString.Delete( endPos, 1 );
68 while( endPos < formatString.Length() && isalpha( formatString[endPos] ) )
71 identifier= formatString.Substring<NC>( parsePos + 1, endPos - parsePos - 1 );
75 if( identifier.IsEmpty() )
79 auto entryIt= propertyTable.begin();
80 while( entryIt != propertyTable.end() )
82 if( Substring(identifier).ConsumePartOf<lang::Case::Ignore>( entryIt->Name,
83 entryIt->MinimumRecognitionLength
84 ) == identifier.Length() )
87 formatString.Delete( parsePos, endPos - parsePos + (formatString[endPos] == ESCCharacter ? 1 : 0) );
90 callBacks.emplace_back( &*entryIt );
98 if( entryIt == propertyTable.end() )
100 Exception e( ALIB_CALLER_NULLED, FMTExceptions::UnknownPropertyInFormatString,
101 ESCCharacter, identifier, customFormatString );
102 for( auto& row : propertyTable )
103 e.Back().Add( ESCCharacter, row.Name,
", " );
104 e.Back().back()=
'.';
115 std::vector<String> heapStrings;
124 Box argument= entry->Callback( src, localString );
127 heapStrings.emplace_back( localString );
128 argument= heapStrings.back();
131 results.
Add ( argument );
Exception & Add(const lang::CallerInfo &ci, TEnum type, TArgs &&... args)
void DbgDisableBufferReplacementWarning()
constexpr bool IsNotEmpty() const
#define ALIB_CALLER_NULLED
strings::TAString< character, lang::HeapAllocator > AString
Type alias in namespace alib.
LocalString< 128 > String128
Type alias name for TLocalString<character,128>.
lang::integer integer
Type alias in namespace alib.
boxing::Box Box
Type alias in namespace alib.
exceptions::Exception Exception
Type alias in namespace alib.
boxing::TBoxes< MonoAllocator > BoxesMA
Type alias in namespace alib.
containers::SharedPtr< format::Formatter > SPFormatter
strings::TString< character > String
Type alias in namespace alib.
characters::character character
Type alias in namespace alib.