Skip to content

Commit 69af9c6

Browse files
authored
Merge pull request #791 from lygstate/cpp-literal-imporve
Cpp literal improve.
2 parents b52169a + e99c024 commit 69af9c6

File tree

1 file changed

+21
-4
lines changed

1 file changed

+21
-4
lines changed

sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/cpp/CppGenerator.java

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2407,24 +2407,41 @@ private CharSequence generateLiteral(final PrimitiveType type, final String valu
24072407
break;
24082408

24092409
case UINT32:
2410+
{
2411+
final long intValue = Long.parseLong(value);
2412+
literal = "UINT32_C(0x" + Integer.toHexString((int)intValue) + ")";
2413+
break;
2414+
}
24102415
case INT32:
2411-
literal = value;
2416+
final long intValue = Long.parseLong(value);
2417+
if (intValue == Integer.MIN_VALUE)
2418+
{
2419+
literal = "INT32_MIN";
2420+
}
2421+
else
2422+
{
2423+
literal = "INT32_C(" + Long.toString(intValue) + ")";
2424+
}
24122425
break;
24132426

24142427
case FLOAT:
24152428
literal = value.endsWith("NaN") ? "SBE_FLOAT_NAN" : value + "f";
24162429
break;
24172430

24182431
case INT64:
2419-
literal = value + "L";
2420-
if (value.equals("-9223372036854775808"))
2432+
final long longValue = Long.parseLong(value);
2433+
if (longValue == Long.MIN_VALUE)
24212434
{
24222435
literal = "INT64_MIN";
24232436
}
2437+
else
2438+
{
2439+
literal = "INT64_C(" + String.valueOf(longValue) + ")";
2440+
}
24242441
break;
24252442

24262443
case UINT64:
2427-
literal = "0x" + Long.toHexString(Long.parseLong(value)) + "L";
2444+
literal = "UINT64_C(0x" + Long.toHexString(Long.parseLong(value)) + ")";
24282445
break;
24292446

24302447
case DOUBLE:

0 commit comments

Comments
 (0)