Skip to content

Commit

Permalink
fix(plc4go/codgen): progress on golang codegen
Browse files Browse the repository at this point in the history
  • Loading branch information
sruehl committed Nov 1, 2021
1 parent c7fe9db commit 0c47784
Show file tree
Hide file tree
Showing 328 changed files with 976 additions and 983 deletions.

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ import (
// Code generated by code-generation. DO NOT EDIT.

<#-- TODO: the code below implies that parserArguments will be null if not present... not pretty -->
<#if type.parserArguments.isPresent()><#assign parserArguments=type.parserArguments.orElseThrow()></#if>
<#if type.parserArguments.isPresent()><#assign parserArguments=type.allParserArguments.orElseThrow()></#if>
<#if type.constFields?has_content>

// Constant values.
Expand Down Expand Up @@ -548,10 +548,8 @@ func (m *${type.name}) LengthInBytes() uint16 {
}

<#assign hasParserArguments=parserArguments?has_content/>
<#assign parserArgumentList><#if hasParserArguments><#list parserArguments as parserArgument>${parserArgument.name}${tracer.dive("parserArgument")} <#if helper.isComplexTypeReference(parserArgument.type) && !helper.isEnumTypeReference(parserArgument.type)>*</#if>${helper.getLanguageTypeNameForTypeReference(parserArgument.type)}<#sep>, </#sep></#list></#if></#assign>
<#assign hasParentParserArguments=(type.parentType?? && type.parentType.parserArguments.isPresent() && type.parentType.parserArguments.orElseThrow()?filter(arg -> hasParserArguments && !parserArguments?map(argument->argument.name)?seq_contains(arg.name) || !hasParserArguments)?has_content)>
<#assign parentParserArgumentList><#if hasParentParserArguments><#list type.parentType.parserArguments.orElseThrow()?filter(arg -> (hasParserArguments && !parserArguments?map(argument->argument.name)?seq_contains(arg.name) || !hasParserArguments) && type.isNonDiscriminatorField(arg.name)) as parserArgument>${tracer.dive("parentParserArgument")}${parserArgument.name} <#if helper.isComplexTypeReference(parserArgument.type) && !helper.isEnumTypeReference(parserArgument.type)>*</#if>${helper.getLanguageTypeNameForTypeReference(parserArgument.type)}<#sep>, </#sep></#list></#if></#assign>
func ${type.name}Parse(readBuffer utils.ReadBuffer<#if hasParserArguments>, ${parserArgumentList}</#if><#if hasParentParserArguments>, ${parentParserArgumentList}</#if>) (*<#if type.parentType?has_content>${type.parentType.name}<#else>${type.name}</#if>, error) {
<#assign parserArgumentList><#if hasParserArguments><#list parserArguments as parserArgument>${parserArgument.name} <#if helper.isComplexTypeReference(parserArgument.type) && !helper.isEnumTypeReference(parserArgument.type)>*</#if>${helper.getLanguageTypeNameForTypeReference(parserArgument.type)}<#sep>, </#sep></#list></#if></#assign>
func ${type.name}Parse(readBuffer utils.ReadBuffer<#if hasParserArguments>, ${parserArgumentList}</#if>) (*<#if type.parentType?has_content>${type.parentType.name}<#else>${type.name}</#if>, error) {
if pullErr := readBuffer.PullContext("${type.name}"); pullErr != nil {
return nil, pullErr
}
Expand All @@ -568,20 +566,20 @@ func ${type.name}Parse(readBuffer utils.ReadBuffer<#if hasParserArguments>, ${pa
<#assign numberOfBytesExpression>
<#compress>
<#if field.isCountArrayField()>
numberOfBytes := int(${helper.toIntegerParseExpression(field, 16, arrayField.loopExpression, parserArguments)})
numberOfBytes${arrayField.name} := int(${helper.toIntegerParseExpression(field, 16, arrayField.loopExpression, parserArguments)})
<#elseif field.isLengthArrayField()>
numberOfBytes := int(${helper.toIntegerParseExpression(field, 16, arrayField.loopExpression, parserArguments)})
numberOfBytes${arrayField.name} := int(${helper.toIntegerParseExpression(field, 16, arrayField.loopExpression, parserArguments)})
<#elseif field.isTerminatedArrayField()>
<#-- TODO: we need to find out to implement this-->
numberOfBytes := int(${helper.toIntegerParseExpression(field, 16, arrayField.loopExpression, parserArguments)})
numberOfBytes${arrayField.name} := int(${helper.toIntegerParseExpression(field, 16, arrayField.loopExpression, parserArguments)})
<#else>
<#-- TODO: we should throw a exception here-->
numberOfBytes := int(-1)
numberOfBytes${arrayField.name} := int(-1)
</#if>
</#compress>
</#assign>
${numberOfBytesExpression}
${arrayField.name}, _readArrayErr := readBuffer.ReadByteArray("${arrayField.name}", numberOfBytes)
${arrayField.name}, _readArrayErr := readBuffer.ReadByteArray("${arrayField.name}", numberOfBytes${arrayField.name})
if _readArrayErr != nil {
return nil, errors.Wrap(_readArrayErr, "Error parsing '${arrayField.name}' field")<@emitImport import="github.com/pkg/errors" />
}
Expand Down Expand Up @@ -856,16 +854,16 @@ func ${type.name}Parse(readBuffer utils.ReadBuffer<#if hasParserArguments>, ${pa
<#assign typeName=typeDefinition.parentType.name>
<#assign typeDefinition=typeDefinition.parentType>
</#if>
<#assign hasRefParams=complexTypeReference.params.isPresent()>
<#assign refParams>
<#if hasRefParams>
<#assign hasRefParams=complexTypeReference.params.isPresent()>
<#assign refParams>
<#if hasRefParams>
,
<#list complexTypeReference.params.orElseThrow() as parserArgument>
${helper.toTypedParseExpression(optionalField, helper.getArgumentType(optionalField.type, parserArgument?index), parserArgument, parserArguments)}
<#sep>, </#sep>
</#list>
</#if>
</#assign>
<#list complexTypeReference.params.orElseThrow() as parserArgument>
${helper.toTypedParseExpression(optionalField, helper.getArgumentType(optionalField.type, parserArgument?index), parserArgument, parserArguments)}
<#sep>, </#sep>
</#list>
</#if>
</#assign>
_val, _err := ${typeName}Parse(readBuffer${refParams})
</@compress>

Expand Down Expand Up @@ -904,7 +902,6 @@ func ${type.name}Parse(readBuffer utils.ReadBuffer<#if hasParserArguments>, ${pa
<#assign typeDefinition=typeDefinition.parentType>
</#if>
<#assign hasRefParams=complexTypeReference.params.isPresent() && typeDefinition.parserArguments.isPresent()>
<#assign refParams> <#if hasRefParams>, <#list complexTypeReference.params.orElseThrow() as typeParam>${helper.toTypedParseExpression(assertField, null, typeParam, null)}<#sep>, </#sep></#list> </#if> </#assign>
</@compress>
_val, _err := ${helper.getLanguageTypeNameForField(field)}Parse(readBuffer${refParams})
if _err != nil {
Expand Down Expand Up @@ -1042,7 +1039,7 @@ func ${type.name}Parse(readBuffer utils.ReadBuffer<#if hasParserArguments>, ${pa
</#if>: // ${case.name}
</@compress>

_parent, typeSwitchError = ${case.name}Parse(readBuffer<#if case.parserArguments.isPresent()>, <#list case.parserArguments.orElseThrow() as parserArgument><#if <#--TODO: here DF1ResponseMessage throws a payloadLength not present: meaning that some feature is not rightfully implemented as the result should be a error not a missing pointer-->type.getPropertyFieldFromThisOrParentByName(parserArgument.name).isPresent() && type.getPropertyFieldFromThisOrParentByName(parserArgument.name).orElseThrow().isOptionalField()>*</#if>${parserArgument.name}<#sep>, </#sep></#list></#if>)
_parent, typeSwitchError = ${case.name}Parse(readBuffer<#if case.allParserArguments.isPresent()>, <#list case.allParserArguments.orElseThrow() as parserArgument><#if <#--TODO: here DF1ResponseMessage throws a payloadLength not present: meaning that some feature is not rightfully implemented as the result should be a error not a missing pointer-->type.getPropertyFieldFromThisOrParentByName(parserArgument.name).isPresent() && type.getPropertyFieldFromThisOrParentByName(parserArgument.name).orElseThrow().isOptionalField()>*</#if>${parserArgument.name}<#sep>, </#sep></#list></#if>)
</#list>
default:
// TODO: return actual type
Expand Down
Loading

0 comments on commit 0c47784

Please sign in to comment.