3535import static uk .co .real_logic .sbe .ir .GenerationUtil .collectGroups ;
3636import static uk .co .real_logic .sbe .ir .GenerationUtil .collectFields ;
3737
38+ @ SuppressWarnings ("MethodLength" )
3839public 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