From c175f0e1403a066c82fbeaa9dcc15b552adcafb2 Mon Sep 17 00:00:00 2001 From: pcdv Date: Thu, 25 Sep 2025 13:21:19 +0200 Subject: [PATCH] @enh Print char fields as char instead of numeric (when primitiveType="char") --- .../sbe/generation/java/JavaGenerator.java | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/java/JavaGenerator.java b/sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/java/JavaGenerator.java index 4e48e9bd0..a6140952d 100644 --- a/sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/java/JavaGenerator.java +++ b/sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/java/JavaGenerator.java @@ -4557,8 +4557,23 @@ private int writeTokenDisplay( } else { - // have to duplicate because of checkstyle :/ - append(sb, indent, "builder.append(this." + fieldName + "());"); + if (typeToken.encoding().primitiveType() == PrimitiveType.CHAR) + { + append(sb, indent, "char _" + fieldName + " = (char) this." + fieldName + "();"); + append(sb, indent, "if (_" + fieldName + " >= 32 && _" + fieldName + " <= 127)"); + append(sb, indent, "{"); + append(sb, indent, " builder.append('\\'').append(_" + fieldName + ").append('\\'');"); + append(sb, indent, "}"); + append(sb, indent, "else"); + append(sb, indent, "{"); + append(sb, indent, " builder.append('\\\\').append((int) _" + fieldName + ");"); + append(sb, indent, "}"); + } + else + { + // have to duplicate because of checkstyle :/ + append(sb, indent, "builder.append(this." + fieldName + "());"); + } } break;