This is an automated email from the ASF dual-hosted git repository.

hutcheb pushed a commit to branch plc4py/integration-test
in repository https://gitbox.apache.org/repos/asf/plc4x.git


The following commit(s) were added to refs/heads/plc4py/integration-test by 
this push:
     new d67822e2dd fix(plc4py): Fix some discriminated enums
d67822e2dd is described below

commit d67822e2ddd42d1144e4ce9adc9ca56e6940156a
Author: Ben Hutcheson <ben.hut...@gmail.com>
AuthorDate: Mon May 6 19:55:30 2024 +0200

    fix(plc4py): Fix some discriminated enums
---
 .../templates/python/complex-type-template.python.ftlh       | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git 
a/code-generation/language-python/src/main/resources/templates/python/complex-type-template.python.ftlh
 
b/code-generation/language-python/src/main/resources/templates/python/complex-type-template.python.ftlh
index b179f1acaf..6bb5783bdb 100644
--- 
a/code-generation/language-python/src/main/resources/templates/python/complex-type-template.python.ftlh
+++ 
b/code-generation/language-python/src/main/resources/templates/python/complex-type-template.python.ftlh
@@ -401,9 +401,9 @@ class ${type.name}<#if 
type.isDiscriminatedParentTypeDefinition()></#if>(<#if ty
         length_in_bits += ${simpleTypeReference.sizeInBits}
             </#if>
         <#elseif helper.isEnumField(field)>
-            length_in_bits += 
${helper.getEnumBaseTypeReference(discriminatorField.type).sizeInBits}
+        length_in_bits += 
${helper.getEnumBaseTypeReference(discriminatorField.type).sizeInBits}
         <#else>
-            length_in_bits += 
self.${helper.camelCaseToSnakeCase(discriminatorField.name)}.length_in_bits()
+        length_in_bits += 
self.${helper.camelCaseToSnakeCase(discriminatorField.name)}.length_in_bits()
         </#if>
         <#break>
     <#case "enum">
@@ -621,7 +621,7 @@ class ${type.name}<#if 
type.isDiscriminatedParentTypeDefinition()></#if>(<#if ty
                 <#assign simpleTypeReference = 
typedField.type.asSimpleTypeReference().orElseThrow()>
         ${helper.camelCaseToSnakeCase(namedField.name)}: 
${helper.getLanguageTypeNameForField(field)} = 
read_buffer.${helper.getDataReaderCall(discriminatorField.type)}(logical_name="${namedField.name}",
 
bit_length=${simpleTypeReference.sizeInBits}${helper.getFieldOptions(typedField,
 parserArguments)}<#if hasParserArguments>, ${parsedList}</#if>)
             <#else>
-        ${helper.camelCaseToSnakeCase(namedField.name)}: 
${helper.getLanguageTypeNameForField(field)} = 
read_buffer.${helper.getDataReaderCall(discriminatorField.type)}(logical_name="${namedField.name}"${helper.getFieldOptions(typedField,
 parserArguments)}<#if hasParserArguments>, ${parsedList}</#if>)
+        ${helper.camelCaseToSnakeCase(namedField.name)}: 
${helper.getLanguageTypeNameForField(field)} = 
read_buffer.${helper.getDataReaderCall(discriminatorField.type)}logical_name="${namedField.name}"${helper.getFieldOptions(typedField,
 parserArguments)}<#if hasParserArguments>, ${parsedList}</#if>)
             </#if>
 
 
@@ -668,8 +668,10 @@ class ${type.name}<#if 
type.isDiscriminatedParentTypeDefinition()></#if>(<#if ty
                 <#assign typedField = field.asTypedField().orElseThrow()>
                 <#assign namedField = field.asNamedField().orElseThrow()>
         ${helper.camelCaseToSnakeCase(namedField.name)}: 
${helper.getLanguageTypeNameForTypeReference(optionalField.type, false)} = None
-        ${helper.camelCaseToSnakeCase(namedField.name)} = 
read_buffer.${helper.getDataReaderCall(optionalField.type)}(logical_name="${namedField.name}"<#if
 
optionalField.conditionExpression.present></#if>${helper.getFieldOptions(typedField,
 parserArguments)}<#if hasParserArguments>, ${parsedList}</#if>)
-
+        <#if optionalField.conditionExpression.present>
+        if ${helper.toSerializationExpression(optionalField, 
helper.boolTypeReference, optionalField.conditionExpression.get(), 
parserArguments)}:
+            ${helper.camelCaseToSnakeCase(namedField.name)} = <#if 
typedField.type.isEnumTypeReference()>read_buffer.${helper.getDataReaderCall(optionalField.type)}bit_length=${helper.getEnumBaseTypeReference(typedField.type).sizeInBits},
 logical_name="${namedField.name}"${helper.getFieldOptions(typedField, 
parserArguments)}<#if hasParserArguments>, ${parsedList}</#if>)<#else><#if 
optionalField.type.isComplexTypeReference()>read_buffer.${helper.getDataReaderCall(optionalField.type)}logic
 [...]
+        </#if>
                 <#break>
             <#case "padding">
                 <#assign paddingField = field.asPaddingField().orElseThrow()>

Reply via email to