Skip to content

Commit 6678b14

Browse files
committed
[Java] Not all fields should have offset.
1 parent 3a4cc5d commit 6678b14

File tree

1 file changed

+20
-6
lines changed

1 file changed

+20
-6
lines changed

sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/csharp/CSharpGenerator.java

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import static uk.co.real_logic.sbe.ir.GenerationUtil.collectGroups;
3636
import static uk.co.real_logic.sbe.ir.GenerationUtil.collectFields;
3737

38+
@SuppressWarnings("MethodLength")
3839
public class CSharpGenerator implements CodeGenerator
3940
{
4041
private static final String META_ATTRIBUTE_ENUM = "MetaAttribute";
@@ -357,7 +358,10 @@ private CharSequence generateVarData(final List<Token> tokens, final String inde
357358
final Token token = tokens.get(i);
358359
if (token.signal() == Signal.BEGIN_VAR_DATA)
359360
{
360-
generateCommonFieldMethods(sb, token, indent);
361+
generateFieldIdMethod(sb, token, indent);
362+
generateSinceActingDeprecated(sb, indent, CSharpUtil.formatPropertyName(token.name()), token);
363+
generateOffsetMethod(sb, token, indent);
364+
361365
final Token varDataToken = Generators.findFirst("varData", tokens, i);
362366
final String characterEncoding = varDataToken.encoding().characterEncoding();
363367
generateCharacterEncodingMethod(sb, token.name(), characterEncoding, indent);
@@ -376,6 +380,7 @@ private CharSequence generateVarData(final List<Token> tokens, final String inde
376380
indent + "public const int %sHeaderSize = %d;\n",
377381
propertyName,
378382
sizeOfLengthField));
383+
379384
sb.append(String.format(indent + "\n" +
380385
indent + "public int %1$sLength()\n" +
381386
indent + "{\n" +
@@ -386,10 +391,12 @@ private CharSequence generateVarData(final List<Token> tokens, final String inde
386391
sizeOfLengthField,
387392
lengthTypePrefix,
388393
byteOrderStr));
394+
389395
sb.append(String.format("\n" +
390396
indent + "public int Get%1$s(byte[] dst, int dstOffset, int length) =>\n" +
391397
indent + INDENT + "Get%1$s(new Span<byte>(dst, dstOffset, length));\n",
392398
propertyName));
399+
393400
sb.append(String.format("\n" +
394401
indent + "public int Get%1$s(Span<byte> dst)\n" +
395402
indent + "{\n" +
@@ -408,6 +415,7 @@ private CharSequence generateVarData(final List<Token> tokens, final String inde
408415
sizeOfLengthField,
409416
lengthTypePrefix,
410417
byteOrderStr));
418+
411419
sb.append(String.format(indent + "\n" +
412420
indent + "// Allocates and returns a new byte array\n" +
413421
indent + "public byte[] Get%1$sBytes()\n" +
@@ -418,18 +426,19 @@ private CharSequence generateVarData(final List<Token> tokens, final String inde
418426
indent + INDENT + "int dataLength = (int)_buffer.%3$sGet%4$s(limit);\n" +
419427
indent + INDENT + "byte[] data = new byte[dataLength];\n" +
420428
indent + INDENT + "_parentMessage.Limit = limit + sizeOfLengthField + dataLength;\n" +
421-
422429
indent + INDENT + "_buffer.GetBytes(limit + sizeOfLengthField, data);\n\n" +
423430
indent + INDENT + "return data;\n" +
424431
indent + "}\n",
425432
propertyName,
426433
sizeOfLengthField,
427434
lengthTypePrefix,
428435
byteOrderStr));
436+
429437
sb.append(String.format("\n" +
430438
indent + "public int Set%1$s(byte[] src, int srcOffset, int length) =>\n" +
431439
indent + INDENT + "Set%1$s(new ReadOnlySpan<byte>(src, srcOffset, length));\n",
432440
propertyName));
441+
433442
sb.append(String.format("\n" +
434443
indent + "public int Set%1$s(ReadOnlySpan<byte> src)\n" +
435444
indent + "{\n" +
@@ -447,6 +456,7 @@ private CharSequence generateVarData(final List<Token> tokens, final String inde
447456
byteOrderStr));
448457
}
449458
}
459+
450460
return sb;
451461
}
452462

@@ -1130,7 +1140,10 @@ private CharSequence generateFields(final List<Token> tokens, final String inden
11301140
final Token encodingToken = tokens.get(i + 1);
11311141
final String propertyName = signalToken.name();
11321142

1133-
generateCommonFieldMethods(sb, signalToken, indent + INDENT);
1143+
generateFieldIdMethod(sb, signalToken, indent + INDENT);
1144+
generateSinceActingDeprecated(
1145+
sb, indent, CSharpUtil.formatPropertyName(signalToken.name()), signalToken);
1146+
generateOffsetMethod(sb, signalToken, indent + INDENT);
11341147
generateFieldMetaAttributeMethod(sb, signalToken, indent + INDENT);
11351148

11361149
switch (encodingToken.signal())
@@ -1157,15 +1170,16 @@ private CharSequence generateFields(final List<Token> tokens, final String inden
11571170
return sb;
11581171
}
11591172

1160-
private void generateCommonFieldMethods(final StringBuilder sb, final Token token, final String indent)
1173+
private void generateFieldIdMethod(final StringBuilder sb, final Token token, final String indent)
11611174
{
11621175
sb.append(String.format("\n" +
11631176
indent + "public const int %sId = %d;\n",
11641177
CSharpUtil.formatPropertyName(token.name()),
11651178
token.id()));
1179+
}
11661180

1167-
generateSinceActingDeprecated(sb, indent, CSharpUtil.formatPropertyName(token.name()), token);
1168-
1181+
private void generateOffsetMethod(final StringBuilder sb, final Token token, final String indent)
1182+
{
11691183
sb.append(String.format("\n" +
11701184
indent + "public const int %sOffset = %d;\n",
11711185
CSharpUtil.formatPropertyName(token.name()),

0 commit comments

Comments
 (0)