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"
87 placeholder.NF.Flags -= NumberFormatFlags::ForceDecimalPoint;
88 placeholder.NF.Flags -= NumberFormatFlags::OmitTrailingFractionalZeros;
100 while( (idx=
parser.IndexOf(
'%', idx )) >= 0
101 && (
parser.CharAt( idx + 1 ) ==
'%'
102 ||
parser.CharAt( idx + 1 ) ==
'n' ) )
117 auto* src =
parser.Buffer();
119 parser.ConsumeChars( length );
128 if( ( c1 ==
'%' && c2 ==
'%')
134 case 'r': c1=
'\r' ;
break;
135 case 'n': c1=
'\n' ;
break;
136 case 't': c1=
'\t' ;
break;
137 case 'a': c1=
'\a' ;
break;
138 case 'b': c1=
'\b' ;
break;
139 case 'v': c1=
'\v' ;
break;
140 case 'f': c1=
'\f' ;
break;
141 case '"': c1=
'"' ;
break;
142 default: c1=
'?' ;
break;
148 else if( c1 ==
'%' && c2 ==
'n' )
181 states state= POSITION;
182 #define NEXTSTATE(s) { state= s; continue; }
193 if (
parser.ConsumeChar(
'<') )
200 while( i <
parser.Length()
201 && isdigit(
parser.CharAt<
NC>(i) ) )
204 if( i > 0 &&
parser.CharAt<
NC>(i) ==
'$')
207 parser.ConsumeChar(
'$') ,
true )
218 bool flagsDone=
false;
221 switch (
parser.CharAtStart() )
237 placeholder.NF.Flags += NumberFormatFlags::ForceDecimalPoint;
238 placeholder.NF.Flags -= NumberFormatFlags::OmitTrailingFractionalZeros;
252 placeholder.NF.Flags += NumberFormatFlags::WriteGroupChars;
273 if( isdigit(
parser.CharAtStart() ) )
295 if ( typeCharLower ==
'a' )
317 if(
NCString(
"egf").IndexOf(
static_cast<nchar>(typeCharLower) ) < 0 )
329 switch ( typeCharLower )
341 placeholder.NF.Flags+= NumberFormatFlags::ForceScientific;
break;
398 NEXTSTATE(TYPE_SUFFIX)
410 default:
ALIB_ERROR(
"FORMAT",
"Illegal switch state." )
break;
420 if( startIdx >= 0 &&
placeholderJS.ConversionUpper && target ==
nullptr )
void InsertDerived(TArgs &&... args)
#define ALIB_ASSERT_RESULT_EQUALS( func, value)
#define ALIB_CALLER_NULLED
#define ALIB_ERROR(domain,...)
@ Center
Chooses centered alignment.
@ Right
Chooses right alignment.
@ Left
Chooses left alignment.
strings::TAString< character, lang::HeapAllocator > AString
Type alias in namespace alib.
lang::integer integer
Type alias in namespace alib.
strings::TCString< nchar > NCString
Type alias in namespace alib.
characters::nchar nchar
Type alias in namespace alib.
exceptions::Exception Exception
Type alias in namespace alib.
containers::SharedPtr< format::Formatter > SPFormatter
characters::character character
Type alias in namespace alib.