This is an automated email from the ASF dual-hosted git repository. sruehl pushed a commit to branch develop in repository https://gitbox.apache.org/repos/asf/plc4x.git
commit efacfe66ab6ca2b86b541977f978467bc32b074a Author: Sebastian Rühl <sru...@apache.org> AuthorDate: Sun Sep 1 11:56:40 2024 +0200 feat(code-gen/go): padding field writer --- .../templates/go/complex-type-template.go.ftlh | 29 +++++++++------------- .../s7/readwrite/model/S7VarPayloadDataItem.go | 18 ++------------ 2 files changed, 14 insertions(+), 33 deletions(-) diff --git a/code-generation/language-go/src/main/resources/templates/go/complex-type-template.go.ftlh b/code-generation/language-go/src/main/resources/templates/go/complex-type-template.go.ftlh index 56fb90a49b..9b7266cf82 100644 --- a/code-generation/language-go/src/main/resources/templates/go/complex-type-template.go.ftlh +++ b/code-generation/language-go/src/main/resources/templates/go/complex-type-template.go.ftlh @@ -1432,24 +1432,19 @@ func (m *_${type.name}) SerializeWithWriteBuffer(ctx context.Context, writeBuffe <#break> <#case "padding"> <#assign paddingField = field.asPaddingField().orElseThrow()> - <#assign simpleTypeReference = paddingField.type.asSimpleTypeReference().orElseThrow()> + <#assign typedField = field.asTypedField().orElseThrow()> - // Padding Field (padding) - { - if pushErr := writeBuffer.PushContext("padding", utils.WithRenderAsList(true)); pushErr != nil { - return errors.Wrap(pushErr, "Error pushing for padding")<@emitImport import="github.com/pkg/errors" /> - } - _timesPadding := uint8(${helper.toSerializationExpression(paddingField, helper.intTypeReference, paddingField.paddingCondition, parserArguments)}) - for ;_timesPadding > 0; _timesPadding-- { - _paddingValue := ${helper.getLanguageTypeNameForField(field)}(${helper.toSerializationExpression(paddingField, paddingField.type, paddingField.paddingValue, parserArguments)}) - _paddingErr := ${helper.getWriteBufferWriteMethodCall("", simpleTypeReference, "(_paddingValue)", paddingField)} - if _paddingErr != nil { - return errors.Wrap(_paddingErr, "Error serializing 'padding' field")<@emitImport import="github.com/pkg/errors" /> - } - } - if popErr := writeBuffer.PopContext("padding", utils.WithRenderAsList(true)); popErr != nil { - return errors.Wrap(popErr, "Error popping for padding")<@emitImport import="github.com/pkg/errors" /> - } + <@compress single_line=true> + if err := WritePaddingField[${helper.getLanguageTypeNameForField(paddingField)}]( + ctx, + "padding", + int(${helper.toSerializationExpression(paddingField, helper.intTypeReference, paddingField.paddingCondition, parserArguments)}), + ${helper.getLanguageTypeNameForField(field)}(${helper.toSerializationExpression(paddingField, paddingField.type, paddingField.paddingValue, parserArguments)}), + ${helper.getDataWriterCall(typedField.type, "padding")}${helper.getFieldOptions(typedField, parserArguments)} + ); err != nil { + </@compress> + + return errors.Wrap(err, "Error serializing 'padding' field")<@emitImport import="github.com/pkg/errors" /> } <#break> <#case "reserved"> diff --git a/plc4go/protocols/s7/readwrite/model/S7VarPayloadDataItem.go b/plc4go/protocols/s7/readwrite/model/S7VarPayloadDataItem.go index ec2ae350eb..4e5353dcf9 100644 --- a/plc4go/protocols/s7/readwrite/model/S7VarPayloadDataItem.go +++ b/plc4go/protocols/s7/readwrite/model/S7VarPayloadDataItem.go @@ -240,22 +240,8 @@ func (m *_S7VarPayloadDataItem) SerializeWithWriteBuffer(ctx context.Context, wr return errors.Wrap(err, "Error serializing 'data' field") } - // Padding Field (padding) - { - if pushErr := writeBuffer.PushContext("padding", utils.WithRenderAsList(true)); pushErr != nil { - return errors.Wrap(pushErr, "Error pushing for padding") - } - _timesPadding := uint8(utils.InlineIf((!(utils.GetLastItemFromContext(ctx))), func() any { return int32((int32(int32(len(m.GetData()))) % int32(int32(2)))) }, func() any { return int32(int32(0)) }).(int32)) - for ; _timesPadding > 0; _timesPadding-- { - _paddingValue := uint8(0x00) - _paddingErr := /*TODO: migrate me*/ writeBuffer.WriteUint8("", 8, uint8((_paddingValue))) - if _paddingErr != nil { - return errors.Wrap(_paddingErr, "Error serializing 'padding' field") - } - } - if popErr := writeBuffer.PopContext("padding", utils.WithRenderAsList(true)); popErr != nil { - return errors.Wrap(popErr, "Error popping for padding") - } + if err := WritePaddingField[uint8](ctx, "padding", int(utils.InlineIf((!(utils.GetLastItemFromContext(ctx))), func() any { return int32((int32(int32(len(m.GetData()))) % int32(int32(2)))) }, func() any { return int32(int32(0)) }).(int32)), uint8(0x00), WriteUnsignedByte(writeBuffer, 8)); err != nil { + return errors.Wrap(err, "Error serializing 'padding' field") } if popErr := writeBuffer.PopContext("S7VarPayloadDataItem"); popErr != nil {