mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-10 12:32:20 +02:00
Added 'A' address format specifier
This commit is contained in:
parent
bc64ac4d78
commit
237f85b846
2 changed files with 37 additions and 7 deletions
|
@ -1297,7 +1297,7 @@ namespace System
|
|||
_defPrecision = defPrecision;
|
||||
_positive = value >= 0;
|
||||
|
||||
if (value == 0 || _specifier == 'X') {
|
||||
if (value == 0 || _specifier == 'X' || _specifier == 'A') {
|
||||
InitHex ((uint64)value);
|
||||
return;
|
||||
}
|
||||
|
@ -1314,7 +1314,7 @@ namespace System
|
|||
_defPrecision = defPrecision;
|
||||
_positive = true;
|
||||
|
||||
if (value == 0 || _specifier == 'X') {
|
||||
if (value == 0 || _specifier == 'X' || _specifier == 'A') {
|
||||
InitHex (value);
|
||||
return;
|
||||
}
|
||||
|
@ -1330,7 +1330,7 @@ namespace System
|
|||
_defPrecision = Int64DefPrecision;
|
||||
_positive = value >= 0;
|
||||
|
||||
if (value == 0 || _specifier == 'X') {
|
||||
if (value == 0 || _specifier == 'X' || _specifier == 'A') {
|
||||
InitHex ((uint64)value);
|
||||
return;
|
||||
}
|
||||
|
@ -1347,7 +1347,7 @@ namespace System
|
|||
_defPrecision = UInt64DefPrecision;
|
||||
_positive = true;
|
||||
|
||||
if (value == 0 || _specifier == 'X') {
|
||||
if (value == 0 || _specifier == 'X' || _specifier == 'A') {
|
||||
InitHex ((uint64)value);
|
||||
return;
|
||||
}
|
||||
|
@ -1809,7 +1809,10 @@ namespace System
|
|||
private void IntegerToString (StringView format, IFormatProvider fp, String outString)
|
||||
{
|
||||
NumberFormatInfo nfi = GetNumberFormatInstance (fp);
|
||||
switch (_specifier) {
|
||||
switch (_specifier)
|
||||
{
|
||||
case 'A':
|
||||
FormatAddress(outString);
|
||||
case 'C':
|
||||
FormatCurrency (_precision, nfi, outString);
|
||||
case 'D':
|
||||
|
@ -2042,6 +2045,33 @@ namespace System
|
|||
outString.Append(_cbuf, 0, _ind);
|
||||
}
|
||||
|
||||
private void FormatAddress(String outString)
|
||||
{
|
||||
char8* digits = _specifierIsUpper ? &DigitUpperTable : &DigitLowerTable;
|
||||
|
||||
const int bufLen = 18;
|
||||
char8* strChars = scope:: char8[bufLen]* (?);
|
||||
int32 curLen = 0;
|
||||
uint64 valLeft = _val1 | ((uint64)_val2 << 32);
|
||||
while (valLeft > 0)
|
||||
{
|
||||
if (curLen == 8)
|
||||
strChars[bufLen - curLen++ - 1] = '\'';
|
||||
strChars[bufLen - curLen++ - 1] = digits[(int)(valLeft & 0xF)];
|
||||
valLeft >>= 4;
|
||||
}
|
||||
|
||||
while (curLen < 10)
|
||||
{
|
||||
if (curLen == 8)
|
||||
strChars[bufLen - curLen++ - 1] = '\'';
|
||||
strChars[bufLen - curLen++ - 1] = '0';
|
||||
}
|
||||
|
||||
char8* char8Ptr = &strChars[bufLen - curLen];
|
||||
outString.Append(char8Ptr, curLen);
|
||||
}
|
||||
|
||||
void FormatFixedPoint (int32 precision, NumberFormatInfo nfi, String outString)
|
||||
{
|
||||
var precision;
|
||||
|
|
|
@ -18,7 +18,7 @@ namespace System
|
|||
|
||||
public override void ToString(String strBuffer)
|
||||
{
|
||||
strBuffer.AppendF("0x{0:P}", (uint)(void*)mVal);
|
||||
strBuffer.AppendF("0x{0:A}", (uint)(void*)mVal);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -35,7 +35,7 @@ namespace System
|
|||
{
|
||||
strBuffer.Append("(");
|
||||
typeof(T).GetFullName(strBuffer);
|
||||
strBuffer.AppendF("*)0x{0:P}", (uint)(void*)mVal);
|
||||
strBuffer.AppendF("*)0x{0:A}", (uint)(void*)mVal);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue