1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-08 19:48:20 +02:00

Support for const expressions for bools & chars

This commit is contained in:
Brian Fiete 2021-12-31 06:17:57 -05:00
parent 2a98bf00d5
commit 28689853d2
6 changed files with 42 additions and 4 deletions

View file

@ -13605,8 +13605,15 @@ StringT<128> BfModule::TypeToString(BfType* resolvedType, BfTypeNameFlags typeNa
void BfModule::VariantToString(StringImpl& str, const BfVariant& variant)
{
switch (variant.mTypeCode)
{
case BfTypeCode_Char8:
{
case BfTypeCode_Boolean:
if (variant.mUInt64 == 0)
str += "false";
else if (variant.mUInt64 == 1)
str += "true";
else
str += StrFormat("%lld", variant.mInt64);
break;
case BfTypeCode_Int8:
case BfTypeCode_UInt8:
case BfTypeCode_Int16:
@ -13614,6 +13621,16 @@ void BfModule::VariantToString(StringImpl& str, const BfVariant& variant)
case BfTypeCode_Int32:
str += StrFormat("%d", variant.mInt32);
break;
case BfTypeCode_Char8:
case BfTypeCode_Char16:
case BfTypeCode_Char32:
if ((variant.mUInt32 >= 32) && (variant.mUInt32 <= 0x7E))
str += StrFormat("'%c'", (char)variant.mUInt32);
else if (variant.mUInt32 <= 0xFF)
str += StrFormat("'\\x%2X'", variant.mUInt32);
else
str += StrFormat("'\\u{%X}'", variant.mUInt32);
break;
case BfTypeCode_UInt32:
str += StrFormat("%lu", variant.mUInt32);
break;