You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by cd...@apache.org on 2021/11/26 23:30:42 UTC

[plc4x] branch develop updated: fix: Worked hard on getting the conditions for typeSwitches strongly typed. (WIP ... currently all Java modules work, C and Go still need some polishing)

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

cdutz pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git


The following commit(s) were added to refs/heads/develop by this push:
     new b99a88a  fix: Worked hard on getting the conditions for typeSwitches strongly typed. (WIP ... currently all Java modules work, C and Go still need some polishing)
b99a88a is described below

commit b99a88aad30a619c48c5fefeebd05ecd28142ccf
Author: cdutz <ch...@c-ware.de>
AuthorDate: Sat Nov 27 00:30:31 2021 +0100

    fix: Worked hard on getting the conditions for typeSwitches strongly typed. (WIP ... currently all Java modules work, C and Go still need some polishing)
---
 .../BaseFreemarkerLanguageTemplateHelper.java      |   8 +-
 .../resources/templates/c/pojo-template.c.ftlh     |   4 +-
 .../language/java/JavaLanguageTemplateHelper.java  |  21 ++-
 .../templates/java/data-io-template.java.ftlh      |  39 +++++-
 .../resources/templates/java/io-template.java.ftlh |  10 +-
 .../templates/java/pojo-template.java.ftlh         |  17 ++-
 plc4c/generated-sources/modbus/src/data_item.c     |  68 ++++-----
 plc4c/generated-sources/modbus/src/modbus_pdu.c    | 156 ++++++++++-----------
 plc4c/generated-sources/s7/src/cotp_packet.c       |  24 ++--
 plc4c/generated-sources/s7/src/cotp_parameter.c    |  20 +--
 plc4c/generated-sources/s7/src/data_item.c         |  48 +++----
 plc4c/generated-sources/s7/src/s7_address.c        |   4 +-
 .../s7/src/s7_data_alarm_message.c                 |   8 +-
 plc4c/generated-sources/s7/src/s7_message.c        |  16 +--
 plc4c/generated-sources/s7/src/s7_parameter.c      |  28 ++--
 .../s7/src/s7_parameter_user_data_item.c           |   4 +-
 plc4c/generated-sources/s7/src/s7_payload.c        |  16 +--
 .../s7/src/s7_payload_user_data_item.c             |  72 +++++-----
 .../s7/src/s7_var_request_parameter_item.c         |   4 +-
 19 files changed, 313 insertions(+), 254 deletions(-)

diff --git a/code-generation/language-base-freemarker/src/main/java/org/apache/plc4x/plugins/codegenerator/protocol/freemarker/BaseFreemarkerLanguageTemplateHelper.java b/code-generation/language-base-freemarker/src/main/java/org/apache/plc4x/plugins/codegenerator/protocol/freemarker/BaseFreemarkerLanguageTemplateHelper.java
index 368184b..cd77ff4 100644
--- a/code-generation/language-base-freemarker/src/main/java/org/apache/plc4x/plugins/codegenerator/protocol/freemarker/BaseFreemarkerLanguageTemplateHelper.java
+++ b/code-generation/language-base-freemarker/src/main/java/org/apache/plc4x/plugins/codegenerator/protocol/freemarker/BaseFreemarkerLanguageTemplateHelper.java
@@ -784,8 +784,9 @@ public abstract class BaseFreemarkerLanguageTemplateHelper implements Freemarker
         // If we found something but there's a "rest" left, we got to use the type we
         // found in this level, get that type's definition and continue from there.
         if (!variableLiteral.getChild().isPresent()) {
-            return Optional.empty();
+            return Optional.of(typeReference);
         }
+        // If we're accessing a child, then the root must be a complex type.
         if (!(typeReference instanceof ComplexTypeReference)) {
             return Optional.empty();
         }
@@ -841,7 +842,7 @@ public abstract class BaseFreemarkerLanguageTemplateHelper implements Freemarker
         Function<String, TypeReference> typeRefRetriever = null;
         if (thisType instanceof DiscriminatedComplexTypeDefinition) {
             switchField = ((ComplexTypeDefinition) thisType.getParentType()).getSwitchField().orElse(null);
-            typeRefRetriever = propertyName -> getTypeReferenceForProperty((ComplexTypeDefinition) thisType, propertyName).orElse(null);
+            typeRefRetriever = propertyName -> getTypeReferenceForProperty((ComplexTypeDefinition) thisType.getParentType(), propertyName).orElse(null);
         } else if (thisType instanceof ComplexTypeDefinition) {
             switchField = ((ComplexTypeDefinition) thisType).getSwitchField().orElse(null);
             typeRefRetriever = propertyName -> getTypeReferenceForProperty((ComplexTypeDefinition) thisType, propertyName).orElse(null);
@@ -864,7 +865,8 @@ public abstract class BaseFreemarkerLanguageTemplateHelper implements Freemarker
         for (VariableLiteral variableLiteral : switchField.getDiscriminatorExpressions()) {
             // Get some symbolic name we can use.
             String discriminatorName = variableLiteral.getDiscriminatorName();
-            Optional<TypeReference> discriminatorType = getDiscriminatorType(typeRefRetriever.apply(variableLiteral.getName()), variableLiteral);
+            final TypeReference typeReference = typeRefRetriever.apply(variableLiteral.getName());
+            Optional<TypeReference> discriminatorType = getDiscriminatorType(typeReference, variableLiteral);
             discriminatorTypes.put(discriminatorName, discriminatorType.orElse(null));
         }
         return discriminatorTypes;
diff --git a/code-generation/language-c/src/main/resources/templates/c/pojo-template.c.ftlh b/code-generation/language-c/src/main/resources/templates/c/pojo-template.c.ftlh
index 6ead09e..3c91599 100644
--- a/code-generation/language-c/src/main/resources/templates/c/pojo-template.c.ftlh
+++ b/code-generation/language-c/src/main/resources/templates/c/pojo-template.c.ftlh
@@ -381,9 +381,9 @@ plc4c_return_code ${helper.getCTypeName(type.name)}_parse(plc4c_spi_read_buffer*
 <#if indentContent>  </#if>  // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
         <#list switchField.cases as case>
             <#if !helper.isComplexTypeReference(helper.getDiscriminatorTypes()[field.discriminatorExpressions[0].name])>
-<#if indentContent>  </#if>  <#if case.discriminatorValues?has_content>if(<#list case.discriminatorValues as discriminatorValue><#if case.discriminatorValues?size &gt; 1>(</#if>${helper.toVariableParseExpression(baseType, switchField, switchField.discriminatorExpressions[discriminatorValue?index].asLiteral().orElseThrow().asVariableLiteral().orElseThrow(), parserArguments)} == ${discriminatorValue}<#if case.discriminatorValues?size &gt; 1>)</#if><#sep> && </#sep></#list>) </#if>{ /* ${ca [...]
+<#if indentContent>  </#if>  <#if case.discriminatorValueTerms?has_content>if(<#list case.discriminatorValueTerms as discriminatorValueTerm><#if case.discriminatorValueTerms?size &gt; 1>(</#if>${helper.toVariableParseExpression(baseType, switchField, switchField.discriminatorExpressions[discriminatorValueTerm?index].asLiteral().orElseThrow().asVariableLiteral().orElseThrow(), parserArguments)} == ${discriminatorValueTerm}<#if case.discriminatorValueTerms?size &gt; 1>)</#if><#sep> && </#s [...]
             <#else>
-<#if indentContent>  </#if>  <#if case.discriminatorValues?has_content>if(<#list case.discriminatorValues as discriminatorValue><#if case.discriminatorValues?size &gt; 1>(</#if>${helper.toVariableParseExpression(baseType, switchField, switchField.discriminatorExpressions[discriminatorValue?index].asLiteral().orElseThrow().asVariableLiteral().orElseThrow(), parserArguments)} == ${helper.getLanguageTypeNameForTypeReference(helper.getDiscriminatorTypes()[field.discriminatorExpressions[discr [...]
+<#if indentContent>  </#if>  <#if case.discriminatorValueTerms?has_content>if(<#list case.discriminatorValueTerms as discriminatorValueTerm><#if case.discriminatorValueTerms?size &gt; 1>(</#if>${helper.toVariableParseExpression(baseType, switchField, switchField.discriminatorExpressions[discriminatorValueTerm?index].asLiteral().orElseThrow().asVariableLiteral().orElseThrow(), parserArguments)} == ${helper.getLanguageTypeNameForTypeReference(helper.getDiscriminatorTypes()[field.discrimina [...]
            </#if>
 <#if baseType.isDiscriminatedChildTypeDefinition()>
     <#assign discriminatedChildType = type.asDiscriminatedComplexTypeDefinition().orElseThrow()>
diff --git a/code-generation/language-java/src/main/java/org/apache/plc4x/language/java/JavaLanguageTemplateHelper.java b/code-generation/language-java/src/main/java/org/apache/plc4x/language/java/JavaLanguageTemplateHelper.java
index bc7ff4c..86c9267 100644
--- a/code-generation/language-java/src/main/java/org/apache/plc4x/language/java/JavaLanguageTemplateHelper.java
+++ b/code-generation/language-java/src/main/java/org/apache/plc4x/language/java/JavaLanguageTemplateHelper.java
@@ -615,7 +615,24 @@ public class JavaLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHe
             return tracer + Boolean.toString(((BooleanLiteral) literal).getValue());
         } else if (literal instanceof NumericLiteral) {
             tracer = tracer.dive("numeric literal instanceOf");
-            return tracer + ((NumericLiteral) literal).getNumber().toString();
+            final String numberString = ((NumericLiteral) literal).getNumber().toString();
+            if(resultType.isIntegerTypeReference()) {
+                final IntegerTypeReference integerTypeReference = resultType.asIntegerTypeReference().orElseThrow(RuntimeException::new);
+                if(integerTypeReference.getBaseType() == SimpleTypeReference.SimpleBaseType.UINT && integerTypeReference.getSizeInBits() >= 32) {
+                    tracer = tracer.dive("uint >= 32bit");
+                    return tracer + numberString + "L";
+                } else if(integerTypeReference.getBaseType() == SimpleTypeReference.SimpleBaseType.INT && integerTypeReference.getSizeInBits() > 32) {
+                    tracer = tracer.dive("int > 32bit");
+                    return tracer + numberString + "L";
+                }
+            } else if(resultType.isFloatTypeReference()) {
+                final FloatTypeReference floatTypeReference = resultType.asFloatTypeReference().orElseThrow(RuntimeException::new);
+                if(floatTypeReference.getSizeInBits() < 32) {
+                    tracer = tracer.dive("float < 32bit");
+                    return tracer + numberString + "F";
+                }
+            }
+            return tracer + numberString;
         } else if (literal instanceof HexadecimalLiteral) {
             tracer = tracer.dive("hexadecimal literal instanceOf");
             final String hexString = ((HexadecimalLiteral) literal).getHexString();
@@ -625,7 +642,7 @@ public class JavaLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHe
                     tracer = tracer.dive("uint >= 32bit");
                     return tracer + hexString + "L";
                 } else if(integerTypeReference.getBaseType() == SimpleTypeReference.SimpleBaseType.INT && integerTypeReference.getSizeInBits() > 32) {
-                    tracer = tracer.dive("uint > 32bit");
+                    tracer = tracer.dive("int > 32bit");
                     return tracer + hexString + "L";
                 }
             }
diff --git a/code-generation/language-java/src/main/resources/templates/java/data-io-template.java.ftlh b/code-generation/language-java/src/main/resources/templates/java/data-io-template.java.ftlh
index 0fd6eb7..f1fc95a 100644
--- a/code-generation/language-java/src/main/resources/templates/java/data-io-template.java.ftlh
+++ b/code-generation/language-java/src/main/resources/templates/java/data-io-template.java.ftlh
@@ -84,14 +84,20 @@ public class ${type.name}IO {
                     if(
                     <#list case.discriminatorValueTerms as discriminatorValueTerm>
                         <#assign discriminatorExpression=dataIoTypeDefinition.switchField.discriminatorExpressions[discriminatorValueTerm?index].asLiteral().orElseThrow().asVariableLiteral().orElseThrow()>
-                        <#assign typeRef=helper.getDiscriminatorTypes()[discriminatorExpression.name]>
+                        <#assign discriminatorType=helper.getDiscriminatorTypes()[discriminatorExpression.name]>
                         EvaluationHelper.equals(
-                        ${helper.toParseExpression(dataIoTypeDefinition.switchField, typeRef, discriminatorExpression, parserArguments)},
-                        ${helper.toParseExpression(dataIoTypeDefinition.switchField, typeRef, discriminatorValueTerm, parserArguments)}
-                        )
+                        ${helper.toParseExpression(dataIoTypeDefinition.switchField, discriminatorType, discriminatorExpression, parserArguments)},
+                        <#if helper.isEnumTypeReference(discriminatorType)>
+                        ${helper.getLanguageTypeNameForTypeReference(discriminatorType)}.${helper.toParseExpression(dataIoTypeDefinition.switchField, discriminatorType, discriminatorValueTerm, parserArguments)}
+                        <#else>
+                        ${helper.toParseExpression(dataIoTypeDefinition.switchField, discriminatorType, discriminatorValueTerm, parserArguments)}
+                        </#if>
+                    )
                         <#sep> && </#sep>
                     </#list>
-                    ) {
+                    )
+                <#else>
+                    <#assign defaultCaseOutput=true>
                 </#if>
             </...@compress> { // ${case.name}
             <#assign valueDefined=false>
@@ -330,7 +336,28 @@ public class ${type.name}IO {
     public static WriteBufferByteBased staticSerialize(PlcValue _value<#if type.parserArguments.isPresent()>, <#list type.parserArguments.orElseThrow() as parserArgument>${helper.getLanguageTypeNameForTypeReference(parserArgument.type, false)} ${parserArgument.name}<#sep>, </#sep></#list></#if>, ByteOrder byteOrder) throws SerializationException {
         <#assign defaultCaseOutput=false>
         <#assign dataIoTypeDefinition=type.asDataIoTypeDefinition().orElseThrow()>
-        <#list dataIoTypeDefinition.switchField.cases as case><#if case.discriminatorValues?has_content>if(<#list case.discriminatorValues as discriminatorValue>EvaluationHelper.equals(${helper.toParseExpression(null, helper.anyTypeReference, dataIoTypeDefinition.switchField.discriminatorExpressions[discriminatorValue?index], type.parserArguments.orElseThrow())},<#if helper.isComplexTypeReference(dataIoTypeDefinition.parserArguments.orElseThrow()[discriminatorValue?index].type)><#if help [...]
+        <#list dataIoTypeDefinition.switchField.cases as case>
+        <@compress single_line=true>
+            <#if case.discriminatorValueTerms?has_content>
+                if(
+                <#list case.discriminatorValueTerms as discriminatorValueTerm>
+                    <#assign discriminatorExpression=dataIoTypeDefinition.switchField.discriminatorExpressions[discriminatorValueTerm?index].asLiteral().orElseThrow().asVariableLiteral().orElseThrow()>
+                    <#assign discriminatorType=helper.getDiscriminatorTypes()[discriminatorExpression.name]>
+                    EvaluationHelper.equals(
+                    ${helper.toParseExpression(dataIoTypeDefinition.switchField, discriminatorType, discriminatorExpression, parserArguments)},
+                    <#if helper.isEnumTypeReference(discriminatorType)>
+                    ${helper.getLanguageTypeNameForTypeReference(discriminatorType)}.${helper.toParseExpression(dataIoTypeDefinition.switchField, discriminatorType, discriminatorValueTerm, parserArguments)}
+                    <#else>
+                    ${helper.toParseExpression(dataIoTypeDefinition.switchField, discriminatorType, discriminatorValueTerm, parserArguments)}
+                    </#if>
+                    )
+                    <#sep> && </#sep>
+                </#list>
+                )
+            <#else>
+                <#assign defaultCaseOutput=true>
+            </#if>
+        </...@compress> { // ${case.name}
         WriteBufferByteBased writeBuffer = new WriteBufferByteBased((int) Math.ceil(((float) ${helper.getSizeInBits(case,parserArguments)}) / 8.0f), byteOrder);
 
             <#list case.fields as field>
diff --git a/code-generation/language-java/src/main/resources/templates/java/io-template.java.ftlh b/code-generation/language-java/src/main/resources/templates/java/io-template.java.ftlh
index aadf5ab..8501824 100644
--- a/code-generation/language-java/src/main/resources/templates/java/io-template.java.ftlh
+++ b/code-generation/language-java/src/main/resources/templates/java/io-template.java.ftlh
@@ -244,10 +244,14 @@ public class ${type.name}IO implements MessageInput<${type.name}> {
                 if(
                 <#list case.discriminatorValueTerms as discriminatorValueTerm>
                     <#assign discriminatorExpression=switchField.discriminatorExpressions[discriminatorValueTerm?index].asLiteral().orElseThrow().asVariableLiteral().orElseThrow()>
-                    <#assign typeRef=helper.getDiscriminatorTypes()[discriminatorExpression.name]>
+                    <#assign discriminatorType=helper.getDiscriminatorTypes()[discriminatorExpression.discriminatorName]>
                     EvaluationHelper.equals(
-                    ${helper.toParseExpression(switchField, typeRef, discriminatorExpression, parserArguments)},
-                    ${helper.toParseExpression(switchField, typeRef, discriminatorValueTerm, parserArguments)}
+                    ${helper.toParseExpression(switchField, discriminatorType, discriminatorExpression, parserArguments)},
+                    <#if helper.isEnumTypeReference(discriminatorType)>
+                    ${helper.getLanguageTypeNameForTypeReference(discriminatorType)}.${helper.toParseExpression(switchField, discriminatorType, discriminatorValueTerm, parserArguments)}
+                    <#else>
+                    ${helper.toParseExpression(switchField, discriminatorType, discriminatorValueTerm, parserArguments)}
+                    </#if>
                     )
                     <#sep> && </#sep>
                     </#list>
diff --git a/code-generation/language-java/src/main/resources/templates/java/pojo-template.java.ftlh b/code-generation/language-java/src/main/resources/templates/java/pojo-template.java.ftlh
index 4c76a1d..ba2ca2d 100644
--- a/code-generation/language-java/src/main/resources/templates/java/pojo-template.java.ftlh
+++ b/code-generation/language-java/src/main/resources/templates/java/pojo-template.java.ftlh
@@ -80,9 +80,18 @@ public<#if type.isDiscriminatedParentTypeDefinition()> abstract</#if> class ${ty
     // Accessors for discriminator values.
     <#list discriminatedChildType.getDiscriminatorMap() as discriminatorName, discriminatorValue>
         <#-- If the discriminator name matches that of another field, suppress the methods generation -->
-        <#if !discriminatedChildType.isNonDiscriminatorField(discriminatorName)>
-    public ${helper.getLanguageTypeNameForTypeReference(helper.getDiscriminatorTypes()[discriminatorName])} get${discriminatorName?cap_first}() {
-        return ${helper.toParseExpression(null, helper.getDiscriminatorTypes()[discriminatorName], discriminatorValue, parserArguments)};
+        <#if !discriminatedChildType.isNonDiscriminatorField(discriminatorName)><#--&& !discriminatedChildType.isParserArgument(discriminatorName)-->
+            <#assign discriminatorType = helper.getDiscriminatorTypes()[discriminatorName]>
+    public ${helper.getLanguageTypeNameForTypeReference(discriminatorType)} get${discriminatorName?cap_first}() {
+            <#if discriminatorValue??>
+                <#if helper.isEnumTypeReference(discriminatorType)>
+        return ${helper.getLanguageTypeNameForTypeReference(discriminatorType)}.${helper.toParseExpression(null, discriminatorType, discriminatorValue, parserArguments)};
+                <#else>
+        return ${helper.toParseExpression(null, discriminatorType, discriminatorValue, parserArguments)};
+                </#if>
+            <#else>
+        return ${helper.getNullValueForTypeReference(discriminatorType)};
+            </#if>
     }
         </#if>
     </#list>
@@ -97,7 +106,7 @@ public<#if type.isDiscriminatedParentTypeDefinition()> abstract</#if> class ${ty
     // Abstract accessors for discriminator values.
     <#list helper.discriminatorTypes as discriminatorName, discriminatorType>
         <#-- If the discriminator name matches that of another field, suppress the methods generation -->
-        <#if !type.isNonDiscriminatorField(discriminatorName)>
+        <#if !type.isNonDiscriminatorField(discriminatorName)><#-- && !type.isParserArgument(discriminatorName)-->
     public abstract ${helper.getLanguageTypeNameForTypeReference(discriminatorType)} get${discriminatorName?cap_first}();
         </#if>
     </#list>
diff --git a/plc4c/generated-sources/modbus/src/data_item.c b/plc4c/generated-sources/modbus/src/data_item.c
index 3d6cba2..5f30d23 100644
--- a/plc4c/generated-sources/modbus/src/data_item.c
+++ b/plc4c/generated-sources/modbus/src/data_item.c
@@ -34,7 +34,7 @@ plc4c_return_code plc4c_modbus_read_write_data_item_parse(plc4c_spi_read_buffer*
     uint16_t curPos;
     plc4c_return_code _res = OK;
 
-        if((dataType == plc4c_modbus_read_write_modbus_data_type_BOOL) && (numberOfValues == 1)) { /* BOOL */
+        { /* BOOL */
 
                 // Reserved Field (Compartmentalized so the "reserved" variable can't leak)
                 {
@@ -58,7 +58,7 @@ plc4c_return_code plc4c_modbus_read_write_data_item_parse(plc4c_spi_read_buffer*
                     // Hurz
                 *data_item = plc4c_data_create_bool_data(value);
 
-    } else         if(dataType == plc4c_modbus_read_write_modbus_data_type_BOOL) { /* List */
+    } else         { /* List */
 
         // Array field (value)
         // Count array
@@ -76,7 +76,7 @@ plc4c_return_code plc4c_modbus_read_write_data_item_parse(plc4c_spi_read_buffer*
         }
         *data_item = plc4c_data_create_list_data(*value);
 
-    } else         if((dataType == plc4c_modbus_read_write_modbus_data_type_BYTE) && (numberOfValues == 1)) { /* BitString */
+    } else         { /* BitString */
 
                 // Simple Field (value)
                 uint8_t value = 0;
@@ -87,7 +87,7 @@ plc4c_return_code plc4c_modbus_read_write_data_item_parse(plc4c_spi_read_buffer*
 
                 *data_item = plc4c_data_create_uint8_t_bit_string_data(value);
 
-    } else         if(dataType == plc4c_modbus_read_write_modbus_data_type_BYTE) { /* List */
+    } else         { /* List */
 
         // Array field (value)
         // Count array
@@ -105,7 +105,7 @@ plc4c_return_code plc4c_modbus_read_write_data_item_parse(plc4c_spi_read_buffer*
         }
         *data_item = plc4c_data_create_list_data(*value);
 
-    } else         if((dataType == plc4c_modbus_read_write_modbus_data_type_WORD) && (numberOfValues == 1)) { /* BitString */
+    } else         { /* BitString */
 
                 // Simple Field (value)
                 uint16_t value = 0;
@@ -116,7 +116,7 @@ plc4c_return_code plc4c_modbus_read_write_data_item_parse(plc4c_spi_read_buffer*
 
                 *data_item = plc4c_data_create_uint16_t_bit_string_data(value);
 
-    } else         if(dataType == plc4c_modbus_read_write_modbus_data_type_WORD) { /* List */
+    } else         { /* List */
 
         // Array field (value)
         // Count array
@@ -134,7 +134,7 @@ plc4c_return_code plc4c_modbus_read_write_data_item_parse(plc4c_spi_read_buffer*
         }
         *data_item = plc4c_data_create_list_data(*value);
 
-    } else         if((dataType == plc4c_modbus_read_write_modbus_data_type_DWORD) && (numberOfValues == 1)) { /* BitString */
+    } else         { /* BitString */
 
                 // Simple Field (value)
                 uint32_t value = 0;
@@ -145,7 +145,7 @@ plc4c_return_code plc4c_modbus_read_write_data_item_parse(plc4c_spi_read_buffer*
 
                 *data_item = plc4c_data_create_uint32_t_bit_string_data(value);
 
-    } else         if(dataType == plc4c_modbus_read_write_modbus_data_type_DWORD) { /* List */
+    } else         { /* List */
 
         // Array field (value)
         // Count array
@@ -163,7 +163,7 @@ plc4c_return_code plc4c_modbus_read_write_data_item_parse(plc4c_spi_read_buffer*
         }
         *data_item = plc4c_data_create_list_data(*value);
 
-    } else         if((dataType == plc4c_modbus_read_write_modbus_data_type_LWORD) && (numberOfValues == 1)) { /* BitString */
+    } else         { /* BitString */
 
                 // Simple Field (value)
                 uint64_t value = 0;
@@ -174,7 +174,7 @@ plc4c_return_code plc4c_modbus_read_write_data_item_parse(plc4c_spi_read_buffer*
 
                 *data_item = plc4c_data_create_uint64_t_bit_string_data(value);
 
-    } else         if(dataType == plc4c_modbus_read_write_modbus_data_type_LWORD) { /* List */
+    } else         { /* List */
 
         // Array field (value)
         // Count array
@@ -192,7 +192,7 @@ plc4c_return_code plc4c_modbus_read_write_data_item_parse(plc4c_spi_read_buffer*
         }
         *data_item = plc4c_data_create_list_data(*value);
 
-    } else         if((dataType == plc4c_modbus_read_write_modbus_data_type_SINT) && (numberOfValues == 1)) { /* SINT */
+    } else         { /* SINT */
 
                 // Simple Field (value)
                 int8_t value = 0;
@@ -204,7 +204,7 @@ plc4c_return_code plc4c_modbus_read_write_data_item_parse(plc4c_spi_read_buffer*
                     // Hurz
                 *data_item = plc4c_data_create_int8_t_data(value);
 
-    } else         if(dataType == plc4c_modbus_read_write_modbus_data_type_SINT) { /* List */
+    } else         { /* List */
 
         // Array field (value)
         // Count array
@@ -222,7 +222,7 @@ plc4c_return_code plc4c_modbus_read_write_data_item_parse(plc4c_spi_read_buffer*
         }
         *data_item = plc4c_data_create_list_data(*value);
 
-    } else         if((dataType == plc4c_modbus_read_write_modbus_data_type_INT) && (numberOfValues == 1)) { /* INT */
+    } else         { /* INT */
 
                 // Simple Field (value)
                 int16_t value = 0;
@@ -234,7 +234,7 @@ plc4c_return_code plc4c_modbus_read_write_data_item_parse(plc4c_spi_read_buffer*
                     // Hurz
                 *data_item = plc4c_data_create_int16_t_data(value);
 
-    } else         if(dataType == plc4c_modbus_read_write_modbus_data_type_INT) { /* List */
+    } else         { /* List */
 
         // Array field (value)
         // Count array
@@ -252,7 +252,7 @@ plc4c_return_code plc4c_modbus_read_write_data_item_parse(plc4c_spi_read_buffer*
         }
         *data_item = plc4c_data_create_list_data(*value);
 
-    } else         if((dataType == plc4c_modbus_read_write_modbus_data_type_DINT) && (numberOfValues == 1)) { /* DINT */
+    } else         { /* DINT */
 
                 // Simple Field (value)
                 int32_t value = 0;
@@ -264,7 +264,7 @@ plc4c_return_code plc4c_modbus_read_write_data_item_parse(plc4c_spi_read_buffer*
                     // Hurz
                 *data_item = plc4c_data_create_int32_t_data(value);
 
-    } else         if(dataType == plc4c_modbus_read_write_modbus_data_type_DINT) { /* List */
+    } else         { /* List */
 
         // Array field (value)
         // Count array
@@ -282,7 +282,7 @@ plc4c_return_code plc4c_modbus_read_write_data_item_parse(plc4c_spi_read_buffer*
         }
         *data_item = plc4c_data_create_list_data(*value);
 
-    } else         if((dataType == plc4c_modbus_read_write_modbus_data_type_LINT) && (numberOfValues == 1)) { /* LINT */
+    } else         { /* LINT */
 
                 // Simple Field (value)
                 int64_t value = 0;
@@ -294,7 +294,7 @@ plc4c_return_code plc4c_modbus_read_write_data_item_parse(plc4c_spi_read_buffer*
                     // Hurz
                 *data_item = plc4c_data_create_int64_t_data(value);
 
-    } else         if(dataType == plc4c_modbus_read_write_modbus_data_type_LINT) { /* List */
+    } else         { /* List */
 
         // Array field (value)
         // Count array
@@ -312,7 +312,7 @@ plc4c_return_code plc4c_modbus_read_write_data_item_parse(plc4c_spi_read_buffer*
         }
         *data_item = plc4c_data_create_list_data(*value);
 
-    } else         if((dataType == plc4c_modbus_read_write_modbus_data_type_USINT) && (numberOfValues == 1)) { /* USINT */
+    } else         { /* USINT */
 
                 // Simple Field (value)
                 uint8_t value = 0;
@@ -324,7 +324,7 @@ plc4c_return_code plc4c_modbus_read_write_data_item_parse(plc4c_spi_read_buffer*
                     // Hurz
                 *data_item = plc4c_data_create_uint8_t_data(value);
 
-    } else         if(dataType == plc4c_modbus_read_write_modbus_data_type_USINT) { /* List */
+    } else         { /* List */
 
         // Array field (value)
         // Count array
@@ -342,7 +342,7 @@ plc4c_return_code plc4c_modbus_read_write_data_item_parse(plc4c_spi_read_buffer*
         }
         *data_item = plc4c_data_create_list_data(*value);
 
-    } else         if((dataType == plc4c_modbus_read_write_modbus_data_type_UINT) && (numberOfValues == 1)) { /* UINT */
+    } else         { /* UINT */
 
                 // Simple Field (value)
                 uint16_t value = 0;
@@ -354,7 +354,7 @@ plc4c_return_code plc4c_modbus_read_write_data_item_parse(plc4c_spi_read_buffer*
                     // Hurz
                 *data_item = plc4c_data_create_uint16_t_data(value);
 
-    } else         if(dataType == plc4c_modbus_read_write_modbus_data_type_UINT) { /* List */
+    } else         { /* List */
 
         // Array field (value)
         // Count array
@@ -372,7 +372,7 @@ plc4c_return_code plc4c_modbus_read_write_data_item_parse(plc4c_spi_read_buffer*
         }
         *data_item = plc4c_data_create_list_data(*value);
 
-    } else         if((dataType == plc4c_modbus_read_write_modbus_data_type_UDINT) && (numberOfValues == 1)) { /* UDINT */
+    } else         { /* UDINT */
 
                 // Simple Field (value)
                 uint32_t value = 0;
@@ -384,7 +384,7 @@ plc4c_return_code plc4c_modbus_read_write_data_item_parse(plc4c_spi_read_buffer*
                     // Hurz
                 *data_item = plc4c_data_create_uint32_t_data(value);
 
-    } else         if(dataType == plc4c_modbus_read_write_modbus_data_type_UDINT) { /* List */
+    } else         { /* List */
 
         // Array field (value)
         // Count array
@@ -402,7 +402,7 @@ plc4c_return_code plc4c_modbus_read_write_data_item_parse(plc4c_spi_read_buffer*
         }
         *data_item = plc4c_data_create_list_data(*value);
 
-    } else         if((dataType == plc4c_modbus_read_write_modbus_data_type_ULINT) && (numberOfValues == 1)) { /* ULINT */
+    } else         { /* ULINT */
 
                 // Simple Field (value)
                 uint64_t value = 0;
@@ -414,7 +414,7 @@ plc4c_return_code plc4c_modbus_read_write_data_item_parse(plc4c_spi_read_buffer*
                     // Hurz
                 *data_item = plc4c_data_create_uint64_t_data(value);
 
-    } else         if(dataType == plc4c_modbus_read_write_modbus_data_type_ULINT) { /* List */
+    } else         { /* List */
 
         // Array field (value)
         // Count array
@@ -432,7 +432,7 @@ plc4c_return_code plc4c_modbus_read_write_data_item_parse(plc4c_spi_read_buffer*
         }
         *data_item = plc4c_data_create_list_data(*value);
 
-    } else         if((dataType == plc4c_modbus_read_write_modbus_data_type_REAL) && (numberOfValues == 1)) { /* REAL */
+    } else         { /* REAL */
 
                 // Simple Field (value)
                 float value = 0.0f;
@@ -444,7 +444,7 @@ plc4c_return_code plc4c_modbus_read_write_data_item_parse(plc4c_spi_read_buffer*
                     // Hurz
                 *data_item = plc4c_data_create_float_data(value);
 
-    } else         if(dataType == plc4c_modbus_read_write_modbus_data_type_REAL) { /* List */
+    } else         { /* List */
 
         // Array field (value)
         // Count array
@@ -462,7 +462,7 @@ plc4c_return_code plc4c_modbus_read_write_data_item_parse(plc4c_spi_read_buffer*
         }
         *data_item = plc4c_data_create_list_data(*value);
 
-    } else         if((dataType == plc4c_modbus_read_write_modbus_data_type_LREAL) && (numberOfValues == 1)) { /* LREAL */
+    } else         { /* LREAL */
 
                 // Simple Field (value)
                 double value = 0.0f;
@@ -474,7 +474,7 @@ plc4c_return_code plc4c_modbus_read_write_data_item_parse(plc4c_spi_read_buffer*
                     // Hurz
                 *data_item = plc4c_data_create_double_data(value);
 
-    } else         if(dataType == plc4c_modbus_read_write_modbus_data_type_LREAL) { /* List */
+    } else         { /* List */
 
         // Array field (value)
         // Count array
@@ -492,7 +492,7 @@ plc4c_return_code plc4c_modbus_read_write_data_item_parse(plc4c_spi_read_buffer*
         }
         *data_item = plc4c_data_create_list_data(*value);
 
-    } else         if((dataType == plc4c_modbus_read_write_modbus_data_type_CHAR) && (numberOfValues == 1)) { /* CHAR */
+    } else         { /* CHAR */
 
                 // Simple Field (value)
                 uint8_t value = 0;
@@ -504,7 +504,7 @@ plc4c_return_code plc4c_modbus_read_write_data_item_parse(plc4c_spi_read_buffer*
                     // Hurz
                 *data_item = plc4c_data_create_uint8_t_data(value);
 
-    } else         if(dataType == plc4c_modbus_read_write_modbus_data_type_CHAR) { /* List */
+    } else         { /* List */
 
         // Array field (value)
         // Count array
@@ -522,7 +522,7 @@ plc4c_return_code plc4c_modbus_read_write_data_item_parse(plc4c_spi_read_buffer*
         }
         *data_item = plc4c_data_create_list_data(*value);
 
-    } else         if((dataType == plc4c_modbus_read_write_modbus_data_type_WCHAR) && (numberOfValues == 1)) { /* WCHAR */
+    } else         { /* WCHAR */
 
                 // Simple Field (value)
                 uint16_t value = 0;
@@ -534,7 +534,7 @@ plc4c_return_code plc4c_modbus_read_write_data_item_parse(plc4c_spi_read_buffer*
                     // Hurz
                 *data_item = plc4c_data_create_uint16_t_data(value);
 
-    } else         if(dataType == plc4c_modbus_read_write_modbus_data_type_WCHAR) { /* List */
+    } else         { /* List */
 
         // Array field (value)
         // Count array
diff --git a/plc4c/generated-sources/modbus/src/modbus_pdu.c b/plc4c/generated-sources/modbus/src/modbus_pdu.c
index ed5691a..d8f0fa1 100644
--- a/plc4c/generated-sources/modbus/src/modbus_pdu.c
+++ b/plc4c/generated-sources/modbus/src/modbus_pdu.c
@@ -28,83 +28,83 @@
 // enum constant to directly access a given types discriminator values)
 const plc4c_modbus_read_write_modbus_pdu_discriminator plc4c_modbus_read_write_modbus_pdu_discriminators[] = {
   {/* plc4c_modbus_read_write_modbus_pdu_error */
-   .errorFlag = true, .functionFlag = -1, .response = -1 },
+   .errorFlag = DefaultBooleanLiteral{value=true}, .functionFlag = -1, .response = -1 },
   {/* plc4c_modbus_read_write_modbus_pdu_read_discrete_inputs_request */
-   .errorFlag = false, .functionFlag = 0x02, .response = false },
+   .errorFlag = DefaultBooleanLiteral{value=false}, .functionFlag = DefaultHexadecimalLiteral{hexString=0x02}, .response = DefaultBooleanLiteral{value=false} },
   {/* plc4c_modbus_read_write_modbus_pdu_read_discrete_inputs_response */
-   .errorFlag = false, .functionFlag = 0x02, .response = true },
+   .errorFlag = DefaultBooleanLiteral{value=false}, .functionFlag = DefaultHexadecimalLiteral{hexString=0x02}, .response = DefaultBooleanLiteral{value=true} },
   {/* plc4c_modbus_read_write_modbus_pdu_read_coils_request */
-   .errorFlag = false, .functionFlag = 0x01, .response = false },
+   .errorFlag = DefaultBooleanLiteral{value=false}, .functionFlag = DefaultHexadecimalLiteral{hexString=0x01}, .response = DefaultBooleanLiteral{value=false} },
   {/* plc4c_modbus_read_write_modbus_pdu_read_coils_response */
-   .errorFlag = false, .functionFlag = 0x01, .response = true },
+   .errorFlag = DefaultBooleanLiteral{value=false}, .functionFlag = DefaultHexadecimalLiteral{hexString=0x01}, .response = DefaultBooleanLiteral{value=true} },
   {/* plc4c_modbus_read_write_modbus_pdu_write_single_coil_request */
-   .errorFlag = false, .functionFlag = 0x05, .response = false },
+   .errorFlag = DefaultBooleanLiteral{value=false}, .functionFlag = DefaultHexadecimalLiteral{hexString=0x05}, .response = DefaultBooleanLiteral{value=false} },
   {/* plc4c_modbus_read_write_modbus_pdu_write_single_coil_response */
-   .errorFlag = false, .functionFlag = 0x05, .response = true },
+   .errorFlag = DefaultBooleanLiteral{value=false}, .functionFlag = DefaultHexadecimalLiteral{hexString=0x05}, .response = DefaultBooleanLiteral{value=true} },
   {/* plc4c_modbus_read_write_modbus_pdu_write_multiple_coils_request */
-   .errorFlag = false, .functionFlag = 0x0F, .response = false },
+   .errorFlag = DefaultBooleanLiteral{value=false}, .functionFlag = DefaultHexadecimalLiteral{hexString=0x0F}, .response = DefaultBooleanLiteral{value=false} },
   {/* plc4c_modbus_read_write_modbus_pdu_write_multiple_coils_response */
-   .errorFlag = false, .functionFlag = 0x0F, .response = true },
+   .errorFlag = DefaultBooleanLiteral{value=false}, .functionFlag = DefaultHexadecimalLiteral{hexString=0x0F}, .response = DefaultBooleanLiteral{value=true} },
   {/* plc4c_modbus_read_write_modbus_pdu_read_input_registers_request */
-   .errorFlag = false, .functionFlag = 0x04, .response = false },
+   .errorFlag = DefaultBooleanLiteral{value=false}, .functionFlag = DefaultHexadecimalLiteral{hexString=0x04}, .response = DefaultBooleanLiteral{value=false} },
   {/* plc4c_modbus_read_write_modbus_pdu_read_input_registers_response */
-   .errorFlag = false, .functionFlag = 0x04, .response = true },
+   .errorFlag = DefaultBooleanLiteral{value=false}, .functionFlag = DefaultHexadecimalLiteral{hexString=0x04}, .response = DefaultBooleanLiteral{value=true} },
   {/* plc4c_modbus_read_write_modbus_pdu_read_holding_registers_request */
-   .errorFlag = false, .functionFlag = 0x03, .response = false },
+   .errorFlag = DefaultBooleanLiteral{value=false}, .functionFlag = DefaultHexadecimalLiteral{hexString=0x03}, .response = DefaultBooleanLiteral{value=false} },
   {/* plc4c_modbus_read_write_modbus_pdu_read_holding_registers_response */
-   .errorFlag = false, .functionFlag = 0x03, .response = true },
+   .errorFlag = DefaultBooleanLiteral{value=false}, .functionFlag = DefaultHexadecimalLiteral{hexString=0x03}, .response = DefaultBooleanLiteral{value=true} },
   {/* plc4c_modbus_read_write_modbus_pdu_write_single_register_request */
-   .errorFlag = false, .functionFlag = 0x06, .response = false },
+   .errorFlag = DefaultBooleanLiteral{value=false}, .functionFlag = DefaultHexadecimalLiteral{hexString=0x06}, .response = DefaultBooleanLiteral{value=false} },
   {/* plc4c_modbus_read_write_modbus_pdu_write_single_register_response */
-   .errorFlag = false, .functionFlag = 0x06, .response = true },
+   .errorFlag = DefaultBooleanLiteral{value=false}, .functionFlag = DefaultHexadecimalLiteral{hexString=0x06}, .response = DefaultBooleanLiteral{value=true} },
   {/* plc4c_modbus_read_write_modbus_pdu_write_multiple_holding_registers_request */
-   .errorFlag = false, .functionFlag = 0x10, .response = false },
+   .errorFlag = DefaultBooleanLiteral{value=false}, .functionFlag = DefaultHexadecimalLiteral{hexString=0x10}, .response = DefaultBooleanLiteral{value=false} },
   {/* plc4c_modbus_read_write_modbus_pdu_write_multiple_holding_registers_response */
-   .errorFlag = false, .functionFlag = 0x10, .response = true },
+   .errorFlag = DefaultBooleanLiteral{value=false}, .functionFlag = DefaultHexadecimalLiteral{hexString=0x10}, .response = DefaultBooleanLiteral{value=true} },
   {/* plc4c_modbus_read_write_modbus_pdu_read_write_multiple_holding_registers_request */
-   .errorFlag = false, .functionFlag = 0x17, .response = false },
+   .errorFlag = DefaultBooleanLiteral{value=false}, .functionFlag = DefaultHexadecimalLiteral{hexString=0x17}, .response = DefaultBooleanLiteral{value=false} },
   {/* plc4c_modbus_read_write_modbus_pdu_read_write_multiple_holding_registers_response */
-   .errorFlag = false, .functionFlag = 0x17, .response = true },
+   .errorFlag = DefaultBooleanLiteral{value=false}, .functionFlag = DefaultHexadecimalLiteral{hexString=0x17}, .response = DefaultBooleanLiteral{value=true} },
   {/* plc4c_modbus_read_write_modbus_pdu_mask_write_holding_register_request */
-   .errorFlag = false, .functionFlag = 0x16, .response = false },
+   .errorFlag = DefaultBooleanLiteral{value=false}, .functionFlag = DefaultHexadecimalLiteral{hexString=0x16}, .response = DefaultBooleanLiteral{value=false} },
   {/* plc4c_modbus_read_write_modbus_pdu_mask_write_holding_register_response */
-   .errorFlag = false, .functionFlag = 0x16, .response = true },
+   .errorFlag = DefaultBooleanLiteral{value=false}, .functionFlag = DefaultHexadecimalLiteral{hexString=0x16}, .response = DefaultBooleanLiteral{value=true} },
   {/* plc4c_modbus_read_write_modbus_pdu_read_fifo_queue_request */
-   .errorFlag = false, .functionFlag = 0x18, .response = false },
+   .errorFlag = DefaultBooleanLiteral{value=false}, .functionFlag = DefaultHexadecimalLiteral{hexString=0x18}, .response = DefaultBooleanLiteral{value=false} },
   {/* plc4c_modbus_read_write_modbus_pdu_read_fifo_queue_response */
-   .errorFlag = false, .functionFlag = 0x18, .response = true },
+   .errorFlag = DefaultBooleanLiteral{value=false}, .functionFlag = DefaultHexadecimalLiteral{hexString=0x18}, .response = DefaultBooleanLiteral{value=true} },
   {/* plc4c_modbus_read_write_modbus_pdu_read_file_record_request */
-   .errorFlag = false, .functionFlag = 0x14, .response = false },
+   .errorFlag = DefaultBooleanLiteral{value=false}, .functionFlag = DefaultHexadecimalLiteral{hexString=0x14}, .response = DefaultBooleanLiteral{value=false} },
   {/* plc4c_modbus_read_write_modbus_pdu_read_file_record_response */
-   .errorFlag = false, .functionFlag = 0x14, .response = true },
+   .errorFlag = DefaultBooleanLiteral{value=false}, .functionFlag = DefaultHexadecimalLiteral{hexString=0x14}, .response = DefaultBooleanLiteral{value=true} },
   {/* plc4c_modbus_read_write_modbus_pdu_write_file_record_request */
-   .errorFlag = false, .functionFlag = 0x15, .response = false },
+   .errorFlag = DefaultBooleanLiteral{value=false}, .functionFlag = DefaultHexadecimalLiteral{hexString=0x15}, .response = DefaultBooleanLiteral{value=false} },
   {/* plc4c_modbus_read_write_modbus_pdu_write_file_record_response */
-   .errorFlag = false, .functionFlag = 0x15, .response = true },
+   .errorFlag = DefaultBooleanLiteral{value=false}, .functionFlag = DefaultHexadecimalLiteral{hexString=0x15}, .response = DefaultBooleanLiteral{value=true} },
   {/* plc4c_modbus_read_write_modbus_pdu_read_exception_status_request */
-   .errorFlag = false, .functionFlag = 0x07, .response = false },
+   .errorFlag = DefaultBooleanLiteral{value=false}, .functionFlag = DefaultHexadecimalLiteral{hexString=0x07}, .response = DefaultBooleanLiteral{value=false} },
   {/* plc4c_modbus_read_write_modbus_pdu_read_exception_status_response */
-   .errorFlag = false, .functionFlag = 0x07, .response = true },
+   .errorFlag = DefaultBooleanLiteral{value=false}, .functionFlag = DefaultHexadecimalLiteral{hexString=0x07}, .response = DefaultBooleanLiteral{value=true} },
   {/* plc4c_modbus_read_write_modbus_pdu_diagnostic_request */
-   .errorFlag = false, .functionFlag = 0x08, .response = false },
+   .errorFlag = DefaultBooleanLiteral{value=false}, .functionFlag = DefaultHexadecimalLiteral{hexString=0x08}, .response = DefaultBooleanLiteral{value=false} },
   {/* plc4c_modbus_read_write_modbus_pdu_diagnostic_response */
-   .errorFlag = false, .functionFlag = 0x08, .response = true },
+   .errorFlag = DefaultBooleanLiteral{value=false}, .functionFlag = DefaultHexadecimalLiteral{hexString=0x08}, .response = DefaultBooleanLiteral{value=true} },
   {/* plc4c_modbus_read_write_modbus_pdu_get_com_event_counter_request */
-   .errorFlag = false, .functionFlag = 0x0B, .response = false },
+   .errorFlag = DefaultBooleanLiteral{value=false}, .functionFlag = DefaultHexadecimalLiteral{hexString=0x0B}, .response = DefaultBooleanLiteral{value=false} },
   {/* plc4c_modbus_read_write_modbus_pdu_get_com_event_counter_response */
-   .errorFlag = false, .functionFlag = 0x0B, .response = true },
+   .errorFlag = DefaultBooleanLiteral{value=false}, .functionFlag = DefaultHexadecimalLiteral{hexString=0x0B}, .response = DefaultBooleanLiteral{value=true} },
   {/* plc4c_modbus_read_write_modbus_pdu_get_com_event_log_request */
-   .errorFlag = false, .functionFlag = 0x0C, .response = false },
+   .errorFlag = DefaultBooleanLiteral{value=false}, .functionFlag = DefaultHexadecimalLiteral{hexString=0x0C}, .response = DefaultBooleanLiteral{value=false} },
   {/* plc4c_modbus_read_write_modbus_pdu_get_com_event_log_response */
-   .errorFlag = false, .functionFlag = 0x0C, .response = true },
+   .errorFlag = DefaultBooleanLiteral{value=false}, .functionFlag = DefaultHexadecimalLiteral{hexString=0x0C}, .response = DefaultBooleanLiteral{value=true} },
   {/* plc4c_modbus_read_write_modbus_pdu_report_server_id_request */
-   .errorFlag = false, .functionFlag = 0x11, .response = false },
+   .errorFlag = DefaultBooleanLiteral{value=false}, .functionFlag = DefaultHexadecimalLiteral{hexString=0x11}, .response = DefaultBooleanLiteral{value=false} },
   {/* plc4c_modbus_read_write_modbus_pdu_report_server_id_response */
-   .errorFlag = false, .functionFlag = 0x11, .response = true },
+   .errorFlag = DefaultBooleanLiteral{value=false}, .functionFlag = DefaultHexadecimalLiteral{hexString=0x11}, .response = DefaultBooleanLiteral{value=true} },
   {/* plc4c_modbus_read_write_modbus_pdu_read_device_identification_request */
-   .errorFlag = false, .functionFlag = 0x2B, .response = false },
+   .errorFlag = DefaultBooleanLiteral{value=false}, .functionFlag = DefaultHexadecimalLiteral{hexString=0x2B}, .response = DefaultBooleanLiteral{value=false} },
   {/* plc4c_modbus_read_write_modbus_pdu_read_device_identification_response */
-   .errorFlag = false, .functionFlag = 0x2B, .response = true }
+   .errorFlag = DefaultBooleanLiteral{value=false}, .functionFlag = DefaultHexadecimalLiteral{hexString=0x2B}, .response = DefaultBooleanLiteral{value=true} }
 
 };
 
@@ -149,7 +149,7 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_parse(plc4c_spi_read_buffer
   }
 
   // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
-  if(errorFlag == true) { /* ModbusPDUError */
+  { /* ModbusPDUError */
     (*_message)->_type = plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_error;
                     
     // Simple Field (exceptionCode)
@@ -161,7 +161,7 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_parse(plc4c_spi_read_buffer
     (*_message)->modbus_pdu_error_exception_code = *exceptionCode;
 
   } else 
-  if((errorFlag == false) && (functionFlag == 0x02) && (response == false)) { /* ModbusPDUReadDiscreteInputsRequest */
+  { /* ModbusPDUReadDiscreteInputsRequest */
     (*_message)->_type = plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_read_discrete_inputs_request;
                     
     // Simple Field (startingAddress)
@@ -183,7 +183,7 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_parse(plc4c_spi_read_buffer
     (*_message)->modbus_pdu_read_discrete_inputs_request_quantity = quantity;
 
   } else 
-  if((errorFlag == false) && (functionFlag == 0x02) && (response == true)) { /* ModbusPDUReadDiscreteInputsResponse */
+  { /* ModbusPDUReadDiscreteInputsResponse */
     (*_message)->_type = plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_read_discrete_inputs_response;
                     
     // Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
@@ -217,7 +217,7 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_parse(plc4c_spi_read_buffer
     (*_message)->modbus_pdu_read_discrete_inputs_response_value = value;
 
   } else 
-  if((errorFlag == false) && (functionFlag == 0x01) && (response == false)) { /* ModbusPDUReadCoilsRequest */
+  { /* ModbusPDUReadCoilsRequest */
     (*_message)->_type = plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_read_coils_request;
                     
     // Simple Field (startingAddress)
@@ -239,7 +239,7 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_parse(plc4c_spi_read_buffer
     (*_message)->modbus_pdu_read_coils_request_quantity = quantity;
 
   } else 
-  if((errorFlag == false) && (functionFlag == 0x01) && (response == true)) { /* ModbusPDUReadCoilsResponse */
+  { /* ModbusPDUReadCoilsResponse */
     (*_message)->_type = plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_read_coils_response;
                     
     // Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
@@ -273,7 +273,7 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_parse(plc4c_spi_read_buffer
     (*_message)->modbus_pdu_read_coils_response_value = value;
 
   } else 
-  if((errorFlag == false) && (functionFlag == 0x05) && (response == false)) { /* ModbusPDUWriteSingleCoilRequest */
+  { /* ModbusPDUWriteSingleCoilRequest */
     (*_message)->_type = plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_write_single_coil_request;
                     
     // Simple Field (address)
@@ -295,7 +295,7 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_parse(plc4c_spi_read_buffer
     (*_message)->modbus_pdu_write_single_coil_request_value = value;
 
   } else 
-  if((errorFlag == false) && (functionFlag == 0x05) && (response == true)) { /* ModbusPDUWriteSingleCoilResponse */
+  { /* ModbusPDUWriteSingleCoilResponse */
     (*_message)->_type = plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_write_single_coil_response;
                     
     // Simple Field (address)
@@ -317,7 +317,7 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_parse(plc4c_spi_read_buffer
     (*_message)->modbus_pdu_write_single_coil_response_value = value;
 
   } else 
-  if((errorFlag == false) && (functionFlag == 0x0F) && (response == false)) { /* ModbusPDUWriteMultipleCoilsRequest */
+  { /* ModbusPDUWriteMultipleCoilsRequest */
     (*_message)->_type = plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_write_multiple_coils_request;
                     
     // Simple Field (startingAddress)
@@ -371,7 +371,7 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_parse(plc4c_spi_read_buffer
     (*_message)->modbus_pdu_write_multiple_coils_request_value = value;
 
   } else 
-  if((errorFlag == false) && (functionFlag == 0x0F) && (response == true)) { /* ModbusPDUWriteMultipleCoilsResponse */
+  { /* ModbusPDUWriteMultipleCoilsResponse */
     (*_message)->_type = plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_write_multiple_coils_response;
                     
     // Simple Field (startingAddress)
@@ -393,7 +393,7 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_parse(plc4c_spi_read_buffer
     (*_message)->modbus_pdu_write_multiple_coils_response_quantity = quantity;
 
   } else 
-  if((errorFlag == false) && (functionFlag == 0x04) && (response == false)) { /* ModbusPDUReadInputRegistersRequest */
+  { /* ModbusPDUReadInputRegistersRequest */
     (*_message)->_type = plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_read_input_registers_request;
                     
     // Simple Field (startingAddress)
@@ -415,7 +415,7 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_parse(plc4c_spi_read_buffer
     (*_message)->modbus_pdu_read_input_registers_request_quantity = quantity;
 
   } else 
-  if((errorFlag == false) && (functionFlag == 0x04) && (response == true)) { /* ModbusPDUReadInputRegistersResponse */
+  { /* ModbusPDUReadInputRegistersResponse */
     (*_message)->_type = plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_read_input_registers_response;
                     
     // Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
@@ -449,7 +449,7 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_parse(plc4c_spi_read_buffer
     (*_message)->modbus_pdu_read_input_registers_response_value = value;
 
   } else 
-  if((errorFlag == false) && (functionFlag == 0x03) && (response == false)) { /* ModbusPDUReadHoldingRegistersRequest */
+  { /* ModbusPDUReadHoldingRegistersRequest */
     (*_message)->_type = plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_read_holding_registers_request;
                     
     // Simple Field (startingAddress)
@@ -471,7 +471,7 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_parse(plc4c_spi_read_buffer
     (*_message)->modbus_pdu_read_holding_registers_request_quantity = quantity;
 
   } else 
-  if((errorFlag == false) && (functionFlag == 0x03) && (response == true)) { /* ModbusPDUReadHoldingRegistersResponse */
+  { /* ModbusPDUReadHoldingRegistersResponse */
     (*_message)->_type = plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_read_holding_registers_response;
                     
     // Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
@@ -505,7 +505,7 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_parse(plc4c_spi_read_buffer
     (*_message)->modbus_pdu_read_holding_registers_response_value = value;
 
   } else 
-  if((errorFlag == false) && (functionFlag == 0x06) && (response == false)) { /* ModbusPDUWriteSingleRegisterRequest */
+  { /* ModbusPDUWriteSingleRegisterRequest */
     (*_message)->_type = plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_write_single_register_request;
                     
     // Simple Field (address)
@@ -527,7 +527,7 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_parse(plc4c_spi_read_buffer
     (*_message)->modbus_pdu_write_single_register_request_value = value;
 
   } else 
-  if((errorFlag == false) && (functionFlag == 0x06) && (response == true)) { /* ModbusPDUWriteSingleRegisterResponse */
+  { /* ModbusPDUWriteSingleRegisterResponse */
     (*_message)->_type = plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_write_single_register_response;
                     
     // Simple Field (address)
@@ -549,7 +549,7 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_parse(plc4c_spi_read_buffer
     (*_message)->modbus_pdu_write_single_register_response_value = value;
 
   } else 
-  if((errorFlag == false) && (functionFlag == 0x10) && (response == false)) { /* ModbusPDUWriteMultipleHoldingRegistersRequest */
+  { /* ModbusPDUWriteMultipleHoldingRegistersRequest */
     (*_message)->_type = plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_write_multiple_holding_registers_request;
                     
     // Simple Field (startingAddress)
@@ -603,7 +603,7 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_parse(plc4c_spi_read_buffer
     (*_message)->modbus_pdu_write_multiple_holding_registers_request_value = value;
 
   } else 
-  if((errorFlag == false) && (functionFlag == 0x10) && (response == true)) { /* ModbusPDUWriteMultipleHoldingRegistersResponse */
+  { /* ModbusPDUWriteMultipleHoldingRegistersResponse */
     (*_message)->_type = plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_write_multiple_holding_registers_response;
                     
     // Simple Field (startingAddress)
@@ -625,7 +625,7 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_parse(plc4c_spi_read_buffer
     (*_message)->modbus_pdu_write_multiple_holding_registers_response_quantity = quantity;
 
   } else 
-  if((errorFlag == false) && (functionFlag == 0x17) && (response == false)) { /* ModbusPDUReadWriteMultipleHoldingRegistersRequest */
+  { /* ModbusPDUReadWriteMultipleHoldingRegistersRequest */
     (*_message)->_type = plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_read_write_multiple_holding_registers_request;
                     
     // Simple Field (readStartingAddress)
@@ -699,7 +699,7 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_parse(plc4c_spi_read_buffer
     (*_message)->modbus_pdu_read_write_multiple_holding_registers_request_value = value;
 
   } else 
-  if((errorFlag == false) && (functionFlag == 0x17) && (response == true)) { /* ModbusPDUReadWriteMultipleHoldingRegistersResponse */
+  { /* ModbusPDUReadWriteMultipleHoldingRegistersResponse */
     (*_message)->_type = plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_read_write_multiple_holding_registers_response;
                     
     // Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
@@ -733,7 +733,7 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_parse(plc4c_spi_read_buffer
     (*_message)->modbus_pdu_read_write_multiple_holding_registers_response_value = value;
 
   } else 
-  if((errorFlag == false) && (functionFlag == 0x16) && (response == false)) { /* ModbusPDUMaskWriteHoldingRegisterRequest */
+  { /* ModbusPDUMaskWriteHoldingRegisterRequest */
     (*_message)->_type = plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_mask_write_holding_register_request;
                     
     // Simple Field (referenceAddress)
@@ -765,7 +765,7 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_parse(plc4c_spi_read_buffer
     (*_message)->modbus_pdu_mask_write_holding_register_request_or_mask = orMask;
 
   } else 
-  if((errorFlag == false) && (functionFlag == 0x16) && (response == true)) { /* ModbusPDUMaskWriteHoldingRegisterResponse */
+  { /* ModbusPDUMaskWriteHoldingRegisterResponse */
     (*_message)->_type = plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_mask_write_holding_register_response;
                     
     // Simple Field (referenceAddress)
@@ -797,7 +797,7 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_parse(plc4c_spi_read_buffer
     (*_message)->modbus_pdu_mask_write_holding_register_response_or_mask = orMask;
 
   } else 
-  if((errorFlag == false) && (functionFlag == 0x18) && (response == false)) { /* ModbusPDUReadFifoQueueRequest */
+  { /* ModbusPDUReadFifoQueueRequest */
     (*_message)->_type = plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_read_fifo_queue_request;
                     
     // Simple Field (fifoPointerAddress)
@@ -809,7 +809,7 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_parse(plc4c_spi_read_buffer
     (*_message)->modbus_pdu_read_fifo_queue_request_fifo_pointer_address = fifoPointerAddress;
 
   } else 
-  if((errorFlag == false) && (functionFlag == 0x18) && (response == true)) { /* ModbusPDUReadFifoQueueResponse */
+  { /* ModbusPDUReadFifoQueueResponse */
     (*_message)->_type = plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_read_fifo_queue_response;
                     
     // Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
@@ -852,7 +852,7 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_parse(plc4c_spi_read_buffer
     (*_message)->modbus_pdu_read_fifo_queue_response_fifo_value = fifoValue;
 
   } else 
-  if((errorFlag == false) && (functionFlag == 0x14) && (response == false)) { /* ModbusPDUReadFileRecordRequest */
+  { /* ModbusPDUReadFileRecordRequest */
     (*_message)->_type = plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_read_file_record_request;
                     
     // Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
@@ -886,7 +886,7 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_parse(plc4c_spi_read_buffer
     (*_message)->modbus_pdu_read_file_record_request_items = items;
 
   } else 
-  if((errorFlag == false) && (functionFlag == 0x14) && (response == true)) { /* ModbusPDUReadFileRecordResponse */
+  { /* ModbusPDUReadFileRecordResponse */
     (*_message)->_type = plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_read_file_record_response;
                     
     // Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
@@ -920,7 +920,7 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_parse(plc4c_spi_read_buffer
     (*_message)->modbus_pdu_read_file_record_response_items = items;
 
   } else 
-  if((errorFlag == false) && (functionFlag == 0x15) && (response == false)) { /* ModbusPDUWriteFileRecordRequest */
+  { /* ModbusPDUWriteFileRecordRequest */
     (*_message)->_type = plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_write_file_record_request;
                     
     // Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
@@ -954,7 +954,7 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_parse(plc4c_spi_read_buffer
     (*_message)->modbus_pdu_write_file_record_request_items = items;
 
   } else 
-  if((errorFlag == false) && (functionFlag == 0x15) && (response == true)) { /* ModbusPDUWriteFileRecordResponse */
+  { /* ModbusPDUWriteFileRecordResponse */
     (*_message)->_type = plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_write_file_record_response;
                     
     // Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
@@ -988,10 +988,10 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_parse(plc4c_spi_read_buffer
     (*_message)->modbus_pdu_write_file_record_response_items = items;
 
   } else 
-  if((errorFlag == false) && (functionFlag == 0x07) && (response == false)) { /* ModbusPDUReadExceptionStatusRequest */
+  { /* ModbusPDUReadExceptionStatusRequest */
     (*_message)->_type = plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_read_exception_status_request;
   } else 
-  if((errorFlag == false) && (functionFlag == 0x07) && (response == true)) { /* ModbusPDUReadExceptionStatusResponse */
+  { /* ModbusPDUReadExceptionStatusResponse */
     (*_message)->_type = plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_read_exception_status_response;
                     
     // Simple Field (value)
@@ -1003,7 +1003,7 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_parse(plc4c_spi_read_buffer
     (*_message)->modbus_pdu_read_exception_status_response_value = value;
 
   } else 
-  if((errorFlag == false) && (functionFlag == 0x08) && (response == false)) { /* ModbusPDUDiagnosticRequest */
+  { /* ModbusPDUDiagnosticRequest */
     (*_message)->_type = plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_diagnostic_request;
                     
     // Simple Field (subFunction)
@@ -1025,7 +1025,7 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_parse(plc4c_spi_read_buffer
     (*_message)->modbus_pdu_diagnostic_request_data = data;
 
   } else 
-  if((errorFlag == false) && (functionFlag == 0x08) && (response == true)) { /* ModbusPDUDiagnosticResponse */
+  { /* ModbusPDUDiagnosticResponse */
     (*_message)->_type = plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_diagnostic_response;
                     
     // Simple Field (subFunction)
@@ -1047,10 +1047,10 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_parse(plc4c_spi_read_buffer
     (*_message)->modbus_pdu_diagnostic_response_data = data;
 
   } else 
-  if((errorFlag == false) && (functionFlag == 0x0B) && (response == false)) { /* ModbusPDUGetComEventCounterRequest */
+  { /* ModbusPDUGetComEventCounterRequest */
     (*_message)->_type = plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_get_com_event_counter_request;
   } else 
-  if((errorFlag == false) && (functionFlag == 0x0B) && (response == true)) { /* ModbusPDUGetComEventCounterResponse */
+  { /* ModbusPDUGetComEventCounterResponse */
     (*_message)->_type = plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_get_com_event_counter_response;
                     
     // Simple Field (status)
@@ -1072,10 +1072,10 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_parse(plc4c_spi_read_buffer
     (*_message)->modbus_pdu_get_com_event_counter_response_event_count = eventCount;
 
   } else 
-  if((errorFlag == false) && (functionFlag == 0x0C) && (response == false)) { /* ModbusPDUGetComEventLogRequest */
+  { /* ModbusPDUGetComEventLogRequest */
     (*_message)->_type = plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_get_com_event_log_request;
   } else 
-  if((errorFlag == false) && (functionFlag == 0x0C) && (response == true)) { /* ModbusPDUGetComEventLogResponse */
+  { /* ModbusPDUGetComEventLogResponse */
     (*_message)->_type = plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_get_com_event_log_response;
                     
     // Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
@@ -1139,10 +1139,10 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_parse(plc4c_spi_read_buffer
     (*_message)->modbus_pdu_get_com_event_log_response_events = events;
 
   } else 
-  if((errorFlag == false) && (functionFlag == 0x11) && (response == false)) { /* ModbusPDUReportServerIdRequest */
+  { /* ModbusPDUReportServerIdRequest */
     (*_message)->_type = plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_report_server_id_request;
   } else 
-  if((errorFlag == false) && (functionFlag == 0x11) && (response == true)) { /* ModbusPDUReportServerIdResponse */
+  { /* ModbusPDUReportServerIdResponse */
     (*_message)->_type = plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_report_server_id_response;
                     
     // Implicit Field (byteCount) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
@@ -1176,10 +1176,10 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_parse(plc4c_spi_read_buffer
     (*_message)->modbus_pdu_report_server_id_response_value = value;
 
   } else 
-  if((errorFlag == false) && (functionFlag == 0x2B) && (response == false)) { /* ModbusPDUReadDeviceIdentificationRequest */
+  { /* ModbusPDUReadDeviceIdentificationRequest */
     (*_message)->_type = plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_read_device_identification_request;
   } else 
-  if((errorFlag == false) && (functionFlag == 0x2B) && (response == true)) { /* ModbusPDUReadDeviceIdentificationResponse */
+  { /* ModbusPDUReadDeviceIdentificationResponse */
     (*_message)->_type = plc4c_modbus_read_write_modbus_pdu_type_plc4c_modbus_read_write_modbus_pdu_read_device_identification_response;
   }
 
diff --git a/plc4c/generated-sources/s7/src/cotp_packet.c b/plc4c/generated-sources/s7/src/cotp_packet.c
index 20b1bfb..c51ba45 100644
--- a/plc4c/generated-sources/s7/src/cotp_packet.c
+++ b/plc4c/generated-sources/s7/src/cotp_packet.c
@@ -28,17 +28,17 @@
 // enum constant to directly access a given types discriminator values)
 const plc4c_s7_read_write_cotp_packet_discriminator plc4c_s7_read_write_cotp_packet_discriminators[] = {
   {/* plc4c_s7_read_write_cotp_packet_data */
-   .tpduCode = 0xF0 },
+   .tpduCode = DefaultHexadecimalLiteral{hexString=0xF0} },
   {/* plc4c_s7_read_write_cotp_packet_connection_request */
-   .tpduCode = 0xE0 },
+   .tpduCode = DefaultHexadecimalLiteral{hexString=0xE0} },
   {/* plc4c_s7_read_write_cotp_packet_connection_response */
-   .tpduCode = 0xD0 },
+   .tpduCode = DefaultHexadecimalLiteral{hexString=0xD0} },
   {/* plc4c_s7_read_write_cotp_packet_disconnect_request */
-   .tpduCode = 0x80 },
+   .tpduCode = DefaultHexadecimalLiteral{hexString=0x80} },
   {/* plc4c_s7_read_write_cotp_packet_disconnect_response */
-   .tpduCode = 0xC0 },
+   .tpduCode = DefaultHexadecimalLiteral{hexString=0xC0} },
   {/* plc4c_s7_read_write_cotp_packet_tpdu_error */
-   .tpduCode = 0x70 }
+   .tpduCode = DefaultHexadecimalLiteral{hexString=0x70} }
 
 };
 
@@ -82,7 +82,7 @@ plc4c_return_code plc4c_s7_read_write_cotp_packet_parse(plc4c_spi_read_buffer* r
   }
 
   // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
-  if(tpduCode == 0xF0) { /* COTPPacketData */
+  { /* COTPPacketData */
     (*_message)->_type = plc4c_s7_read_write_cotp_packet_type_plc4c_s7_read_write_cotp_packet_data;
                     
     // Simple Field (eot)
@@ -104,7 +104,7 @@ plc4c_return_code plc4c_s7_read_write_cotp_packet_parse(plc4c_spi_read_buffer* r
     (*_message)->cotp_packet_data_tpdu_ref = tpduRef;
 
   } else 
-  if(tpduCode == 0xE0) { /* COTPPacketConnectionRequest */
+  { /* COTPPacketConnectionRequest */
     (*_message)->_type = plc4c_s7_read_write_cotp_packet_type_plc4c_s7_read_write_cotp_packet_connection_request;
                     
     // Simple Field (destinationReference)
@@ -136,7 +136,7 @@ plc4c_return_code plc4c_s7_read_write_cotp_packet_parse(plc4c_spi_read_buffer* r
     (*_message)->cotp_packet_connection_request_protocol_class = *protocolClass;
 
   } else 
-  if(tpduCode == 0xD0) { /* COTPPacketConnectionResponse */
+  { /* COTPPacketConnectionResponse */
     (*_message)->_type = plc4c_s7_read_write_cotp_packet_type_plc4c_s7_read_write_cotp_packet_connection_response;
                     
     // Simple Field (destinationReference)
@@ -168,7 +168,7 @@ plc4c_return_code plc4c_s7_read_write_cotp_packet_parse(plc4c_spi_read_buffer* r
     (*_message)->cotp_packet_connection_response_protocol_class = *protocolClass;
 
   } else 
-  if(tpduCode == 0x80) { /* COTPPacketDisconnectRequest */
+  { /* COTPPacketDisconnectRequest */
     (*_message)->_type = plc4c_s7_read_write_cotp_packet_type_plc4c_s7_read_write_cotp_packet_disconnect_request;
                     
     // Simple Field (destinationReference)
@@ -200,7 +200,7 @@ plc4c_return_code plc4c_s7_read_write_cotp_packet_parse(plc4c_spi_read_buffer* r
     (*_message)->cotp_packet_disconnect_request_protocol_class = *protocolClass;
 
   } else 
-  if(tpduCode == 0xC0) { /* COTPPacketDisconnectResponse */
+  { /* COTPPacketDisconnectResponse */
     (*_message)->_type = plc4c_s7_read_write_cotp_packet_type_plc4c_s7_read_write_cotp_packet_disconnect_response;
                     
     // Simple Field (destinationReference)
@@ -222,7 +222,7 @@ plc4c_return_code plc4c_s7_read_write_cotp_packet_parse(plc4c_spi_read_buffer* r
     (*_message)->cotp_packet_disconnect_response_source_reference = sourceReference;
 
   } else 
-  if(tpduCode == 0x70) { /* COTPPacketTpduError */
+  { /* COTPPacketTpduError */
     (*_message)->_type = plc4c_s7_read_write_cotp_packet_type_plc4c_s7_read_write_cotp_packet_tpdu_error;
                     
     // Simple Field (destinationReference)
diff --git a/plc4c/generated-sources/s7/src/cotp_parameter.c b/plc4c/generated-sources/s7/src/cotp_parameter.c
index 1299401..b7391ce 100644
--- a/plc4c/generated-sources/s7/src/cotp_parameter.c
+++ b/plc4c/generated-sources/s7/src/cotp_parameter.c
@@ -28,15 +28,15 @@
 // enum constant to directly access a given types discriminator values)
 const plc4c_s7_read_write_cotp_parameter_discriminator plc4c_s7_read_write_cotp_parameter_discriminators[] = {
   {/* plc4c_s7_read_write_cotp_parameter_tpdu_size */
-   .parameterType = 0xC0 },
+   .parameterType = DefaultHexadecimalLiteral{hexString=0xC0} },
   {/* plc4c_s7_read_write_cotp_parameter_calling_tsap */
-   .parameterType = 0xC1 },
+   .parameterType = DefaultHexadecimalLiteral{hexString=0xC1} },
   {/* plc4c_s7_read_write_cotp_parameter_called_tsap */
-   .parameterType = 0xC2 },
+   .parameterType = DefaultHexadecimalLiteral{hexString=0xC2} },
   {/* plc4c_s7_read_write_cotp_parameter_checksum */
-   .parameterType = 0xC3 },
+   .parameterType = DefaultHexadecimalLiteral{hexString=0xC3} },
   {/* plc4c_s7_read_write_cotp_parameter_disconnect_additional_information */
-   .parameterType = 0xE0 }
+   .parameterType = DefaultHexadecimalLiteral{hexString=0xE0} }
 
 };
 
@@ -80,7 +80,7 @@ plc4c_return_code plc4c_s7_read_write_cotp_parameter_parse(plc4c_spi_read_buffer
   }
 
   // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
-  if(parameterType == 0xC0) { /* COTPParameterTpduSize */
+  { /* COTPParameterTpduSize */
     (*_message)->_type = plc4c_s7_read_write_cotp_parameter_type_plc4c_s7_read_write_cotp_parameter_tpdu_size;
                     
     // Simple Field (tpduSize)
@@ -92,7 +92,7 @@ plc4c_return_code plc4c_s7_read_write_cotp_parameter_parse(plc4c_spi_read_buffer
     (*_message)->cotp_parameter_tpdu_size_tpdu_size = *tpduSize;
 
   } else 
-  if(parameterType == 0xC1) { /* COTPParameterCallingTsap */
+  { /* COTPParameterCallingTsap */
     (*_message)->_type = plc4c_s7_read_write_cotp_parameter_type_plc4c_s7_read_write_cotp_parameter_calling_tsap;
                     
     // Simple Field (tsapId)
@@ -104,7 +104,7 @@ plc4c_return_code plc4c_s7_read_write_cotp_parameter_parse(plc4c_spi_read_buffer
     (*_message)->cotp_parameter_calling_tsap_tsap_id = tsapId;
 
   } else 
-  if(parameterType == 0xC2) { /* COTPParameterCalledTsap */
+  { /* COTPParameterCalledTsap */
     (*_message)->_type = plc4c_s7_read_write_cotp_parameter_type_plc4c_s7_read_write_cotp_parameter_called_tsap;
                     
     // Simple Field (tsapId)
@@ -116,7 +116,7 @@ plc4c_return_code plc4c_s7_read_write_cotp_parameter_parse(plc4c_spi_read_buffer
     (*_message)->cotp_parameter_called_tsap_tsap_id = tsapId;
 
   } else 
-  if(parameterType == 0xC3) { /* COTPParameterChecksum */
+  { /* COTPParameterChecksum */
     (*_message)->_type = plc4c_s7_read_write_cotp_parameter_type_plc4c_s7_read_write_cotp_parameter_checksum;
                     
     // Simple Field (crc)
@@ -128,7 +128,7 @@ plc4c_return_code plc4c_s7_read_write_cotp_parameter_parse(plc4c_spi_read_buffer
     (*_message)->cotp_parameter_checksum_crc = crc;
 
   } else 
-  if(parameterType == 0xE0) { /* COTPParameterDisconnectAdditionalInformation */
+  { /* COTPParameterDisconnectAdditionalInformation */
     (*_message)->_type = plc4c_s7_read_write_cotp_parameter_type_plc4c_s7_read_write_cotp_parameter_disconnect_additional_information;
                     
     // Array field (data)
diff --git a/plc4c/generated-sources/s7/src/data_item.c b/plc4c/generated-sources/s7/src/data_item.c
index 25aa858..b940278 100644
--- a/plc4c/generated-sources/s7/src/data_item.c
+++ b/plc4c/generated-sources/s7/src/data_item.c
@@ -34,7 +34,7 @@ plc4c_return_code plc4c_s7_read_write_data_item_parse(plc4c_spi_read_buffer* rea
     uint16_t curPos;
     plc4c_return_code _res = OK;
 
-        if(strcmp(dataProtocolId, "IEC61131_BOOL") == 0) { /* BOOL */
+        { /* BOOL */
 
                 // Reserved Field (Compartmentalized so the "reserved" variable can't leak)
                 {
@@ -58,7 +58,7 @@ plc4c_return_code plc4c_s7_read_write_data_item_parse(plc4c_spi_read_buffer* rea
                     // Hurz
                 *data_item = plc4c_data_create_bool_data(value);
 
-    } else         if(strcmp(dataProtocolId, "IEC61131_BYTE") == 0) { /* List */
+    } else         { /* List */
 
         // Array field (value)
         // Count array
@@ -76,7 +76,7 @@ plc4c_return_code plc4c_s7_read_write_data_item_parse(plc4c_spi_read_buffer* rea
         }
         *data_item = plc4c_data_create_list_data(*value);
 
-    } else         if(strcmp(dataProtocolId, "IEC61131_WORD") == 0) { /* List */
+    } else         { /* List */
 
         // Array field (value)
         // Count array
@@ -94,7 +94,7 @@ plc4c_return_code plc4c_s7_read_write_data_item_parse(plc4c_spi_read_buffer* rea
         }
         *data_item = plc4c_data_create_list_data(*value);
 
-    } else         if(strcmp(dataProtocolId, "IEC61131_DWORD") == 0) { /* List */
+    } else         { /* List */
 
         // Array field (value)
         // Count array
@@ -112,7 +112,7 @@ plc4c_return_code plc4c_s7_read_write_data_item_parse(plc4c_spi_read_buffer* rea
         }
         *data_item = plc4c_data_create_list_data(*value);
 
-    } else         if(strcmp(dataProtocolId, "IEC61131_LWORD") == 0) { /* List */
+    } else         { /* List */
 
         // Array field (value)
         // Count array
@@ -130,7 +130,7 @@ plc4c_return_code plc4c_s7_read_write_data_item_parse(plc4c_spi_read_buffer* rea
         }
         *data_item = plc4c_data_create_list_data(*value);
 
-    } else         if(strcmp(dataProtocolId, "IEC61131_SINT") == 0) { /* SINT */
+    } else         { /* SINT */
 
                 // Simple Field (value)
                 int8_t value = 0;
@@ -142,7 +142,7 @@ plc4c_return_code plc4c_s7_read_write_data_item_parse(plc4c_spi_read_buffer* rea
                     // Hurz
                 *data_item = plc4c_data_create_int8_t_data(value);
 
-    } else         if(strcmp(dataProtocolId, "IEC61131_USINT") == 0) { /* USINT */
+    } else         { /* USINT */
 
                 // Simple Field (value)
                 uint8_t value = 0;
@@ -154,7 +154,7 @@ plc4c_return_code plc4c_s7_read_write_data_item_parse(plc4c_spi_read_buffer* rea
                     // Hurz
                 *data_item = plc4c_data_create_uint8_t_data(value);
 
-    } else         if(strcmp(dataProtocolId, "IEC61131_INT") == 0) { /* INT */
+    } else         { /* INT */
 
                 // Simple Field (value)
                 int16_t value = 0;
@@ -166,7 +166,7 @@ plc4c_return_code plc4c_s7_read_write_data_item_parse(plc4c_spi_read_buffer* rea
                     // Hurz
                 *data_item = plc4c_data_create_int16_t_data(value);
 
-    } else         if(strcmp(dataProtocolId, "IEC61131_UINT") == 0) { /* UINT */
+    } else         { /* UINT */
 
                 // Simple Field (value)
                 uint16_t value = 0;
@@ -178,7 +178,7 @@ plc4c_return_code plc4c_s7_read_write_data_item_parse(plc4c_spi_read_buffer* rea
                     // Hurz
                 *data_item = plc4c_data_create_uint16_t_data(value);
 
-    } else         if(strcmp(dataProtocolId, "IEC61131_DINT") == 0) { /* DINT */
+    } else         { /* DINT */
 
                 // Simple Field (value)
                 int32_t value = 0;
@@ -190,7 +190,7 @@ plc4c_return_code plc4c_s7_read_write_data_item_parse(plc4c_spi_read_buffer* rea
                     // Hurz
                 *data_item = plc4c_data_create_int32_t_data(value);
 
-    } else         if(strcmp(dataProtocolId, "IEC61131_UDINT") == 0) { /* UDINT */
+    } else         { /* UDINT */
 
                 // Simple Field (value)
                 uint32_t value = 0;
@@ -202,7 +202,7 @@ plc4c_return_code plc4c_s7_read_write_data_item_parse(plc4c_spi_read_buffer* rea
                     // Hurz
                 *data_item = plc4c_data_create_uint32_t_data(value);
 
-    } else         if(strcmp(dataProtocolId, "IEC61131_LINT") == 0) { /* LINT */
+    } else         { /* LINT */
 
                 // Simple Field (value)
                 int64_t value = 0;
@@ -214,7 +214,7 @@ plc4c_return_code plc4c_s7_read_write_data_item_parse(plc4c_spi_read_buffer* rea
                     // Hurz
                 *data_item = plc4c_data_create_int64_t_data(value);
 
-    } else         if(strcmp(dataProtocolId, "IEC61131_ULINT") == 0) { /* ULINT */
+    } else         { /* ULINT */
 
                 // Simple Field (value)
                 uint64_t value = 0;
@@ -226,7 +226,7 @@ plc4c_return_code plc4c_s7_read_write_data_item_parse(plc4c_spi_read_buffer* rea
                     // Hurz
                 *data_item = plc4c_data_create_uint64_t_data(value);
 
-    } else         if(strcmp(dataProtocolId, "IEC61131_REAL") == 0) { /* REAL */
+    } else         { /* REAL */
 
                 // Simple Field (value)
                 float value = 0.0f;
@@ -238,7 +238,7 @@ plc4c_return_code plc4c_s7_read_write_data_item_parse(plc4c_spi_read_buffer* rea
                     // Hurz
                 *data_item = plc4c_data_create_float_data(value);
 
-    } else         if(strcmp(dataProtocolId, "IEC61131_LREAL") == 0) { /* LREAL */
+    } else         { /* LREAL */
 
                 // Simple Field (value)
                 double value = 0.0f;
@@ -250,35 +250,35 @@ plc4c_return_code plc4c_s7_read_write_data_item_parse(plc4c_spi_read_buffer* rea
                     // Hurz
                 *data_item = plc4c_data_create_double_data(value);
 
-    } else         if(strcmp(dataProtocolId, "IEC61131_CHAR") == 0) { /* CHAR */
+    } else         { /* CHAR */
 
                 // Manual Field (value)
                 char* value = (char*) (plc4c_s7_read_write_parse_s7_char(readBuffer, "UTF-8"));
 
                 *data_item = plc4c_data_create_char_data(value);
 
-    } else         if(strcmp(dataProtocolId, "IEC61131_WCHAR") == 0) { /* CHAR */
+    } else         { /* CHAR */
 
                 // Manual Field (value)
                 char* value = (char*) (plc4c_s7_read_write_parse_s7_char(readBuffer, "UTF-16"));
 
                 *data_item = plc4c_data_create_char_data(value);
 
-    } else         if(strcmp(dataProtocolId, "IEC61131_STRING") == 0) { /* STRING */
+    } else         { /* STRING */
 
                 // Manual Field (value)
                 char* value = (char*) (plc4c_s7_read_write_parse_s7_string(readBuffer, stringLength, "UTF-8"));
 
                 *data_item = plc4c_data_create_string_data(stringLength, value);
 
-    } else         if(strcmp(dataProtocolId, "IEC61131_WSTRING") == 0) { /* STRING */
+    } else         { /* STRING */
 
                 // Manual Field (value)
                 char* value = (char*) (plc4c_s7_read_write_parse_s7_string(readBuffer, stringLength, "UTF-16"));
 
                 *data_item = plc4c_data_create_string_data(stringLength, value);
 
-    } else         if(strcmp(dataProtocolId, "IEC61131_TIME") == 0) { /* TIME */
+    } else         { /* TIME */
 
                 // Simple Field (value)
                 uint32_t value = 0;
@@ -290,7 +290,7 @@ plc4c_return_code plc4c_s7_read_write_data_item_parse(plc4c_spi_read_buffer* rea
                     // Hurz
                 *data_item = plc4c_data_create_uint32_t_data(value);
 
-    } else         if(strcmp(dataProtocolId, "IEC61131_LTIME") == 0) { /* LTIME */
+    } else         { /* LTIME */
 
                 // Simple Field (value)
                 uint64_t value = 0;
@@ -302,7 +302,7 @@ plc4c_return_code plc4c_s7_read_write_data_item_parse(plc4c_spi_read_buffer* rea
                     // Hurz
                 *data_item = plc4c_data_create_uint64_t_data(value);
 
-    } else         if(strcmp(dataProtocolId, "IEC61131_DATE") == 0) { /* DATE */
+    } else         { /* DATE */
 
                 // Simple Field (value)
                 uint16_t value = 0;
@@ -314,7 +314,7 @@ plc4c_return_code plc4c_s7_read_write_data_item_parse(plc4c_spi_read_buffer* rea
                     // Hurz
                 *data_item = plc4c_data_create_uint16_t_data(value);
 
-    } else         if(strcmp(dataProtocolId, "IEC61131_TIME_OF_DAY") == 0) { /* TIME_OF_DAY */
+    } else         { /* TIME_OF_DAY */
 
                 // Simple Field (value)
                 uint32_t value = 0;
@@ -326,7 +326,7 @@ plc4c_return_code plc4c_s7_read_write_data_item_parse(plc4c_spi_read_buffer* rea
                     // Hurz
                 *data_item = plc4c_data_create_uint32_t_data(value);
 
-    } else         if(strcmp(dataProtocolId, "IEC61131_DATE_AND_TIME") == 0) { /* DATE_AND_TIME */
+    } else         { /* DATE_AND_TIME */
 
                 // Simple Field (year)
                 uint16_t year = 0;
diff --git a/plc4c/generated-sources/s7/src/s7_address.c b/plc4c/generated-sources/s7/src/s7_address.c
index b071bc8..cd9502d 100644
--- a/plc4c/generated-sources/s7/src/s7_address.c
+++ b/plc4c/generated-sources/s7/src/s7_address.c
@@ -28,7 +28,7 @@
 // enum constant to directly access a given types discriminator values)
 const plc4c_s7_read_write_s7_address_discriminator plc4c_s7_read_write_s7_address_discriminators[] = {
   {/* plc4c_s7_read_write_s7_address_any */
-   .addressType = 0x10 }
+   .addressType = DefaultHexadecimalLiteral{hexString=0x10} }
 
 };
 
@@ -65,7 +65,7 @@ plc4c_return_code plc4c_s7_read_write_s7_address_parse(plc4c_spi_read_buffer* re
   }
 
   // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
-  if(addressType == 0x10) { /* S7AddressAny */
+  { /* S7AddressAny */
     (*_message)->_type = plc4c_s7_read_write_s7_address_type_plc4c_s7_read_write_s7_address_any;
                     
     // Enum field (transportSize)
diff --git a/plc4c/generated-sources/s7/src/s7_data_alarm_message.c b/plc4c/generated-sources/s7/src/s7_data_alarm_message.c
index 14dfecc..80efc71 100644
--- a/plc4c/generated-sources/s7/src/s7_data_alarm_message.c
+++ b/plc4c/generated-sources/s7/src/s7_data_alarm_message.c
@@ -28,9 +28,9 @@
 // enum constant to directly access a given types discriminator values)
 const plc4c_s7_read_write_s7_data_alarm_message_discriminator plc4c_s7_read_write_s7_data_alarm_message_discriminators[] = {
   {/* plc4c_s7_read_write_s7_message_object_request */
-   .cpuFunctionType = 0x04 },
+   .cpuFunctionType = DefaultHexadecimalLiteral{hexString=0x04} },
   {/* plc4c_s7_read_write_s7_message_object_response */
-   .cpuFunctionType = 0x08 }
+   .cpuFunctionType = DefaultHexadecimalLiteral{hexString=0x08} }
 
 };
 
@@ -99,7 +99,7 @@ plc4c_return_code plc4c_s7_read_write_s7_data_alarm_message_parse(plc4c_spi_read
   }
 
   // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
-  if(cpuFunctionType == 0x04) { /* S7MessageObjectRequest */
+  { /* S7MessageObjectRequest */
     (*_message)->_type = plc4c_s7_read_write_s7_data_alarm_message_type_plc4c_s7_read_write_s7_message_object_request;
                     
     // Const Field (variableSpec)
@@ -185,7 +185,7 @@ plc4c_return_code plc4c_s7_read_write_s7_data_alarm_message_parse(plc4c_spi_read
     (*_message)->s7_message_object_request_alarm_type = *alarmType;
 
   } else 
-  if(cpuFunctionType == 0x08) { /* S7MessageObjectResponse */
+  { /* S7MessageObjectResponse */
     (*_message)->_type = plc4c_s7_read_write_s7_data_alarm_message_type_plc4c_s7_read_write_s7_message_object_response;
                     
     // Simple Field (returnCode)
diff --git a/plc4c/generated-sources/s7/src/s7_message.c b/plc4c/generated-sources/s7/src/s7_message.c
index 418d85e..9b2a849 100644
--- a/plc4c/generated-sources/s7/src/s7_message.c
+++ b/plc4c/generated-sources/s7/src/s7_message.c
@@ -28,13 +28,13 @@
 // enum constant to directly access a given types discriminator values)
 const plc4c_s7_read_write_s7_message_discriminator plc4c_s7_read_write_s7_message_discriminators[] = {
   {/* plc4c_s7_read_write_s7_message_request */
-   .messageType = 0x01 },
+   .messageType = DefaultHexadecimalLiteral{hexString=0x01} },
   {/* plc4c_s7_read_write_s7_message_response */
-   .messageType = 0x02 },
+   .messageType = DefaultHexadecimalLiteral{hexString=0x02} },
   {/* plc4c_s7_read_write_s7_message_response_data */
-   .messageType = 0x03 },
+   .messageType = DefaultHexadecimalLiteral{hexString=0x03} },
   {/* plc4c_s7_read_write_s7_message_user_data */
-   .messageType = 0x07 }
+   .messageType = DefaultHexadecimalLiteral{hexString=0x07} }
 
 };
 
@@ -122,10 +122,10 @@ plc4c_return_code plc4c_s7_read_write_s7_message_parse(plc4c_spi_read_buffer* re
   }
 
   // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
-  if(messageType == 0x01) { /* S7MessageRequest */
+  { /* S7MessageRequest */
     (*_message)->_type = plc4c_s7_read_write_s7_message_type_plc4c_s7_read_write_s7_message_request;
   } else 
-  if(messageType == 0x02) { /* S7MessageResponse */
+  { /* S7MessageResponse */
     (*_message)->_type = plc4c_s7_read_write_s7_message_type_plc4c_s7_read_write_s7_message_response;
                     
     // Simple Field (errorClass)
@@ -147,7 +147,7 @@ plc4c_return_code plc4c_s7_read_write_s7_message_parse(plc4c_spi_read_buffer* re
     (*_message)->s7_message_response_error_code = errorCode;
 
   } else 
-  if(messageType == 0x03) { /* S7MessageResponseData */
+  { /* S7MessageResponseData */
     (*_message)->_type = plc4c_s7_read_write_s7_message_type_plc4c_s7_read_write_s7_message_response_data;
                     
     // Simple Field (errorClass)
@@ -169,7 +169,7 @@ plc4c_return_code plc4c_s7_read_write_s7_message_parse(plc4c_spi_read_buffer* re
     (*_message)->s7_message_response_data_error_code = errorCode;
 
   } else 
-  if(messageType == 0x07) { /* S7MessageUserData */
+  { /* S7MessageUserData */
     (*_message)->_type = plc4c_s7_read_write_s7_message_type_plc4c_s7_read_write_s7_message_user_data;
   }
 
diff --git a/plc4c/generated-sources/s7/src/s7_parameter.c b/plc4c/generated-sources/s7/src/s7_parameter.c
index 86e91b2..319274b 100644
--- a/plc4c/generated-sources/s7/src/s7_parameter.c
+++ b/plc4c/generated-sources/s7/src/s7_parameter.c
@@ -28,19 +28,19 @@
 // enum constant to directly access a given types discriminator values)
 const plc4c_s7_read_write_s7_parameter_discriminator plc4c_s7_read_write_s7_parameter_discriminators[] = {
   {/* plc4c_s7_read_write_s7_parameter_setup_communication */
-   .parameterType = 0xF0, .messageType = -1 },
+   .parameterType = DefaultHexadecimalLiteral{hexString=0xF0}, .messageType = -1 },
   {/* plc4c_s7_read_write_s7_parameter_read_var_request */
-   .parameterType = 0x04, .messageType = 0x01 },
+   .parameterType = DefaultHexadecimalLiteral{hexString=0x04}, .messageType = DefaultHexadecimalLiteral{hexString=0x01} },
   {/* plc4c_s7_read_write_s7_parameter_read_var_response */
-   .parameterType = 0x04, .messageType = 0x03 },
+   .parameterType = DefaultHexadecimalLiteral{hexString=0x04}, .messageType = DefaultHexadecimalLiteral{hexString=0x03} },
   {/* plc4c_s7_read_write_s7_parameter_write_var_request */
-   .parameterType = 0x05, .messageType = 0x01 },
+   .parameterType = DefaultHexadecimalLiteral{hexString=0x05}, .messageType = DefaultHexadecimalLiteral{hexString=0x01} },
   {/* plc4c_s7_read_write_s7_parameter_write_var_response */
-   .parameterType = 0x05, .messageType = 0x03 },
+   .parameterType = DefaultHexadecimalLiteral{hexString=0x05}, .messageType = DefaultHexadecimalLiteral{hexString=0x03} },
   {/* plc4c_s7_read_write_s7_parameter_user_data */
-   .parameterType = 0x00, .messageType = 0x07 },
+   .parameterType = DefaultHexadecimalLiteral{hexString=0x00}, .messageType = DefaultHexadecimalLiteral{hexString=0x07} },
   {/* plc4c_s7_read_write_s7_parameter_mode_transition */
-   .parameterType = 0x01, .messageType = 0x07 }
+   .parameterType = DefaultHexadecimalLiteral{hexString=0x01}, .messageType = DefaultHexadecimalLiteral{hexString=0x07} }
 
 };
 
@@ -77,7 +77,7 @@ plc4c_return_code plc4c_s7_read_write_s7_parameter_parse(plc4c_spi_read_buffer*
   }
 
   // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
-  if(parameterType == 0xF0) { /* S7ParameterSetupCommunication */
+  { /* S7ParameterSetupCommunication */
     (*_message)->_type = plc4c_s7_read_write_s7_parameter_type_plc4c_s7_read_write_s7_parameter_setup_communication;
                     
     // Reserved Field (Compartmentalized so the "reserved" variable can't leak)
@@ -123,7 +123,7 @@ plc4c_return_code plc4c_s7_read_write_s7_parameter_parse(plc4c_spi_read_buffer*
     (*_message)->s7_parameter_setup_communication_pdu_length = pduLength;
 
   } else 
-  if((parameterType == 0x04) && (messageType == 0x01)) { /* S7ParameterReadVarRequest */
+  { /* S7ParameterReadVarRequest */
     (*_message)->_type = plc4c_s7_read_write_s7_parameter_type_plc4c_s7_read_write_s7_parameter_read_var_request;
                     
     // Implicit Field (numItems) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
@@ -157,7 +157,7 @@ plc4c_return_code plc4c_s7_read_write_s7_parameter_parse(plc4c_spi_read_buffer*
     (*_message)->s7_parameter_read_var_request_items = items;
 
   } else 
-  if((parameterType == 0x04) && (messageType == 0x03)) { /* S7ParameterReadVarResponse */
+  { /* S7ParameterReadVarResponse */
     (*_message)->_type = plc4c_s7_read_write_s7_parameter_type_plc4c_s7_read_write_s7_parameter_read_var_response;
                     
     // Simple Field (numItems)
@@ -169,7 +169,7 @@ plc4c_return_code plc4c_s7_read_write_s7_parameter_parse(plc4c_spi_read_buffer*
     (*_message)->s7_parameter_read_var_response_num_items = numItems;
 
   } else 
-  if((parameterType == 0x05) && (messageType == 0x01)) { /* S7ParameterWriteVarRequest */
+  { /* S7ParameterWriteVarRequest */
     (*_message)->_type = plc4c_s7_read_write_s7_parameter_type_plc4c_s7_read_write_s7_parameter_write_var_request;
                     
     // Implicit Field (numItems) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
@@ -203,7 +203,7 @@ plc4c_return_code plc4c_s7_read_write_s7_parameter_parse(plc4c_spi_read_buffer*
     (*_message)->s7_parameter_write_var_request_items = items;
 
   } else 
-  if((parameterType == 0x05) && (messageType == 0x03)) { /* S7ParameterWriteVarResponse */
+  { /* S7ParameterWriteVarResponse */
     (*_message)->_type = plc4c_s7_read_write_s7_parameter_type_plc4c_s7_read_write_s7_parameter_write_var_response;
                     
     // Simple Field (numItems)
@@ -215,7 +215,7 @@ plc4c_return_code plc4c_s7_read_write_s7_parameter_parse(plc4c_spi_read_buffer*
     (*_message)->s7_parameter_write_var_response_num_items = numItems;
 
   } else 
-  if((parameterType == 0x00) && (messageType == 0x07)) { /* S7ParameterUserData */
+  { /* S7ParameterUserData */
     (*_message)->_type = plc4c_s7_read_write_s7_parameter_type_plc4c_s7_read_write_s7_parameter_user_data;
                     
     // Implicit Field (numItems) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
@@ -249,7 +249,7 @@ plc4c_return_code plc4c_s7_read_write_s7_parameter_parse(plc4c_spi_read_buffer*
     (*_message)->s7_parameter_user_data_items = items;
 
   } else 
-  if((parameterType == 0x01) && (messageType == 0x07)) { /* S7ParameterModeTransition */
+  { /* S7ParameterModeTransition */
     (*_message)->_type = plc4c_s7_read_write_s7_parameter_type_plc4c_s7_read_write_s7_parameter_mode_transition;
                     
     // Reserved Field (Compartmentalized so the "reserved" variable can't leak)
diff --git a/plc4c/generated-sources/s7/src/s7_parameter_user_data_item.c b/plc4c/generated-sources/s7/src/s7_parameter_user_data_item.c
index 1fcaeb6..e82abe6 100644
--- a/plc4c/generated-sources/s7/src/s7_parameter_user_data_item.c
+++ b/plc4c/generated-sources/s7/src/s7_parameter_user_data_item.c
@@ -28,7 +28,7 @@
 // enum constant to directly access a given types discriminator values)
 const plc4c_s7_read_write_s7_parameter_user_data_item_discriminator plc4c_s7_read_write_s7_parameter_user_data_item_discriminators[] = {
   {/* plc4c_s7_read_write_s7_parameter_user_data_item_cpu_functions */
-   .itemType = 0x12 }
+   .itemType = DefaultHexadecimalLiteral{hexString=0x12} }
 
 };
 
@@ -65,7 +65,7 @@ plc4c_return_code plc4c_s7_read_write_s7_parameter_user_data_item_parse(plc4c_sp
   }
 
   // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
-  if(itemType == 0x12) { /* S7ParameterUserDataItemCPUFunctions */
+  { /* S7ParameterUserDataItemCPUFunctions */
     (*_message)->_type = plc4c_s7_read_write_s7_parameter_user_data_item_type_plc4c_s7_read_write_s7_parameter_user_data_item_cpu_functions;
                     
     // Implicit Field (itemLength) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)
diff --git a/plc4c/generated-sources/s7/src/s7_payload.c b/plc4c/generated-sources/s7/src/s7_payload.c
index 75c688c..1732e76 100644
--- a/plc4c/generated-sources/s7/src/s7_payload.c
+++ b/plc4c/generated-sources/s7/src/s7_payload.c
@@ -28,13 +28,13 @@
 // enum constant to directly access a given types discriminator values)
 const plc4c_s7_read_write_s7_payload_discriminator plc4c_s7_read_write_s7_payload_discriminators[] = {
   {/* plc4c_s7_read_write_s7_payload_read_var_response */
-   .parameterParameterType = 0x04, .messageType = 0x03 },
+   .parameterParameterType = DefaultHexadecimalLiteral{hexString=0x04}, .messageType = DefaultHexadecimalLiteral{hexString=0x03} },
   {/* plc4c_s7_read_write_s7_payload_write_var_request */
-   .parameterParameterType = 0x05, .messageType = 0x01 },
+   .parameterParameterType = DefaultHexadecimalLiteral{hexString=0x05}, .messageType = DefaultHexadecimalLiteral{hexString=0x01} },
   {/* plc4c_s7_read_write_s7_payload_write_var_response */
-   .parameterParameterType = 0x05, .messageType = 0x03 },
+   .parameterParameterType = DefaultHexadecimalLiteral{hexString=0x05}, .messageType = DefaultHexadecimalLiteral{hexString=0x03} },
   {/* plc4c_s7_read_write_s7_payload_user_data */
-   .parameterParameterType = 0x00, .messageType = 0x07 }
+   .parameterParameterType = DefaultHexadecimalLiteral{hexString=0x00}, .messageType = DefaultHexadecimalLiteral{hexString=0x07} }
 
 };
 
@@ -63,7 +63,7 @@ plc4c_return_code plc4c_s7_read_write_s7_payload_parse(plc4c_spi_read_buffer* re
   }
 
   // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
-  if((plc4c_s7_read_write_s7_parameter_get_discriminator(parameter->_type).parameterType == 0x04) && (messageType == 0x03)) { /* S7PayloadReadVarResponse */
+  { /* S7PayloadReadVarResponse */
     (*_message)->_type = plc4c_s7_read_write_s7_payload_type_plc4c_s7_read_write_s7_payload_read_var_response;
                     
     // Array field (items)
@@ -88,7 +88,7 @@ plc4c_return_code plc4c_s7_read_write_s7_payload_parse(plc4c_spi_read_buffer* re
     (*_message)->s7_payload_read_var_response_items = items;
 
   } else 
-  if((plc4c_s7_read_write_s7_parameter_get_discriminator(parameter->_type).parameterType == 0x05) && (messageType == 0x01)) { /* S7PayloadWriteVarRequest */
+  { /* S7PayloadWriteVarRequest */
     (*_message)->_type = plc4c_s7_read_write_s7_payload_type_plc4c_s7_read_write_s7_payload_write_var_request;
                     
     // Array field (items)
@@ -113,7 +113,7 @@ plc4c_return_code plc4c_s7_read_write_s7_payload_parse(plc4c_spi_read_buffer* re
     (*_message)->s7_payload_write_var_request_items = items;
 
   } else 
-  if((plc4c_s7_read_write_s7_parameter_get_discriminator(parameter->_type).parameterType == 0x05) && (messageType == 0x03)) { /* S7PayloadWriteVarResponse */
+  { /* S7PayloadWriteVarResponse */
     (*_message)->_type = plc4c_s7_read_write_s7_payload_type_plc4c_s7_read_write_s7_payload_write_var_response;
                     
     // Array field (items)
@@ -138,7 +138,7 @@ plc4c_return_code plc4c_s7_read_write_s7_payload_parse(plc4c_spi_read_buffer* re
     (*_message)->s7_payload_write_var_response_items = items;
 
   } else 
-  if((plc4c_s7_read_write_s7_parameter_get_discriminator(parameter->_type).parameterType == 0x00) && (messageType == 0x07)) { /* S7PayloadUserData */
+  { /* S7PayloadUserData */
     (*_message)->_type = plc4c_s7_read_write_s7_payload_type_plc4c_s7_read_write_s7_payload_user_data;
                     
     // Array field (items)
diff --git a/plc4c/generated-sources/s7/src/s7_payload_user_data_item.c b/plc4c/generated-sources/s7/src/s7_payload_user_data_item.c
index baa2ed7..75079be 100644
--- a/plc4c/generated-sources/s7/src/s7_payload_user_data_item.c
+++ b/plc4c/generated-sources/s7/src/s7_payload_user_data_item.c
@@ -28,41 +28,41 @@
 // enum constant to directly access a given types discriminator values)
 const plc4c_s7_read_write_s7_payload_user_data_item_discriminator plc4c_s7_read_write_s7_payload_user_data_item_discriminators[] = {
   {/* plc4c_s7_read_write_s7_payload_diagnostic_message */
-   .cpuFunctionType = 0x00, .cpuSubfunction = 0x03, .dataLength = -1 },
+   .cpuFunctionType = DefaultHexadecimalLiteral{hexString=0x00}, .cpuSubfunction = DefaultHexadecimalLiteral{hexString=0x03}, .dataLength = -1 },
   {/* plc4c_s7_read_write_s7_payload_alarm8 */
-   .cpuFunctionType = 0x00, .cpuSubfunction = 0x05, .dataLength = -1 },
+   .cpuFunctionType = DefaultHexadecimalLiteral{hexString=0x00}, .cpuSubfunction = DefaultHexadecimalLiteral{hexString=0x05}, .dataLength = -1 },
   {/* plc4c_s7_read_write_s7_payload_notify */
-   .cpuFunctionType = 0x00, .cpuSubfunction = 0x06, .dataLength = -1 },
+   .cpuFunctionType = DefaultHexadecimalLiteral{hexString=0x00}, .cpuSubfunction = DefaultHexadecimalLiteral{hexString=0x06}, .dataLength = -1 },
   {/* plc4c_s7_read_write_s7_payload_alarm_ack_ind */
-   .cpuFunctionType = 0x00, .cpuSubfunction = 0x0c, .dataLength = -1 },
+   .cpuFunctionType = DefaultHexadecimalLiteral{hexString=0x00}, .cpuSubfunction = DefaultHexadecimalLiteral{hexString=0x0c}, .dataLength = -1 },
   {/* plc4c_s7_read_write_s7_payload_alarm_sq */
-   .cpuFunctionType = 0x00, .cpuSubfunction = 0x11, .dataLength = -1 },
+   .cpuFunctionType = DefaultHexadecimalLiteral{hexString=0x00}, .cpuSubfunction = DefaultHexadecimalLiteral{hexString=0x11}, .dataLength = -1 },
   {/* plc4c_s7_read_write_s7_payload_alarm_s */
-   .cpuFunctionType = 0x00, .cpuSubfunction = 0x12, .dataLength = -1 },
+   .cpuFunctionType = DefaultHexadecimalLiteral{hexString=0x00}, .cpuSubfunction = DefaultHexadecimalLiteral{hexString=0x12}, .dataLength = -1 },
   {/* plc4c_s7_read_write_s7_payload_alarm_sc */
-   .cpuFunctionType = 0x00, .cpuSubfunction = 0x13, .dataLength = -1 },
+   .cpuFunctionType = DefaultHexadecimalLiteral{hexString=0x00}, .cpuSubfunction = DefaultHexadecimalLiteral{hexString=0x13}, .dataLength = -1 },
   {/* plc4c_s7_read_write_s7_payload_notify8 */
-   .cpuFunctionType = 0x00, .cpuSubfunction = 0x16, .dataLength = -1 },
+   .cpuFunctionType = DefaultHexadecimalLiteral{hexString=0x00}, .cpuSubfunction = DefaultHexadecimalLiteral{hexString=0x16}, .dataLength = -1 },
   {/* plc4c_s7_read_write_s7_payload_user_data_item_cpu_function_read_szl_request */
-   .cpuFunctionType = 0x04, .cpuSubfunction = 0x01, .dataLength = -1 },
+   .cpuFunctionType = DefaultHexadecimalLiteral{hexString=0x04}, .cpuSubfunction = DefaultHexadecimalLiteral{hexString=0x01}, .dataLength = -1 },
   {/* plc4c_s7_read_write_s7_payload_user_data_item_cpu_function_read_szl_response */
-   .cpuFunctionType = 0x08, .cpuSubfunction = 0x01, .dataLength = -1 },
+   .cpuFunctionType = DefaultHexadecimalLiteral{hexString=0x08}, .cpuSubfunction = DefaultHexadecimalLiteral{hexString=0x01}, .dataLength = -1 },
   {/* plc4c_s7_read_write_s7_payload_user_data_item_cpu_function_msg_subscription */
-   .cpuFunctionType = 0x04, .cpuSubfunction = 0x02, .dataLength = -1 },
+   .cpuFunctionType = DefaultHexadecimalLiteral{hexString=0x04}, .cpuSubfunction = DefaultHexadecimalLiteral{hexString=0x02}, .dataLength = -1 },
   {/* plc4c_s7_read_write_s7_payload_user_data_item_cpu_function_msg_subscription_response */
-   .cpuFunctionType = 0x08, .cpuSubfunction = 0x02, .dataLength = 0x00 },
+   .cpuFunctionType = DefaultHexadecimalLiteral{hexString=0x08}, .cpuSubfunction = DefaultHexadecimalLiteral{hexString=0x02}, .dataLength = DefaultHexadecimalLiteral{hexString=0x00} },
   {/* plc4c_s7_read_write_s7_payload_user_data_item_cpu_function_msg_subscription_sys_response */
-   .cpuFunctionType = 0x08, .cpuSubfunction = 0x02, .dataLength = 0x02 },
+   .cpuFunctionType = DefaultHexadecimalLiteral{hexString=0x08}, .cpuSubfunction = DefaultHexadecimalLiteral{hexString=0x02}, .dataLength = DefaultHexadecimalLiteral{hexString=0x02} },
   {/* plc4c_s7_read_write_s7_payload_user_data_item_cpu_function_msg_subscription_alarm_response */
-   .cpuFunctionType = 0x08, .cpuSubfunction = 0x02, .dataLength = 0x05 },
+   .cpuFunctionType = DefaultHexadecimalLiteral{hexString=0x08}, .cpuSubfunction = DefaultHexadecimalLiteral{hexString=0x02}, .dataLength = DefaultHexadecimalLiteral{hexString=0x05} },
   {/* plc4c_s7_read_write_s7_payload_user_data_item_cpu_function_alarm_ack */
-   .cpuFunctionType = 0x04, .cpuSubfunction = 0x0b, .dataLength = -1 },
+   .cpuFunctionType = DefaultHexadecimalLiteral{hexString=0x04}, .cpuSubfunction = DefaultHexadecimalLiteral{hexString=0x0b}, .dataLength = -1 },
   {/* plc4c_s7_read_write_s7_payload_user_data_item_cpu_function_alarm_ack_response */
-   .cpuFunctionType = 0x08, .cpuSubfunction = 0x0b, .dataLength = -1 },
+   .cpuFunctionType = DefaultHexadecimalLiteral{hexString=0x08}, .cpuSubfunction = DefaultHexadecimalLiteral{hexString=0x0b}, .dataLength = -1 },
   {/* plc4c_s7_read_write_s7_payload_user_data_item_cpu_function_alarm_query */
-   .cpuFunctionType = 0x04, .cpuSubfunction = 0x13, .dataLength = -1 },
+   .cpuFunctionType = DefaultHexadecimalLiteral{hexString=0x04}, .cpuSubfunction = DefaultHexadecimalLiteral{hexString=0x13}, .dataLength = -1 },
   {/* plc4c_s7_read_write_s7_payload_user_data_item_cpu_function_alarm_query_response */
-   .cpuFunctionType = 0x08, .cpuSubfunction = 0x13, .dataLength = -1 }
+   .cpuFunctionType = DefaultHexadecimalLiteral{hexString=0x08}, .cpuSubfunction = DefaultHexadecimalLiteral{hexString=0x13}, .dataLength = -1 }
 
 };
 
@@ -144,7 +144,7 @@ plc4c_return_code plc4c_s7_read_write_s7_payload_user_data_item_parse(plc4c_spi_
   }
 
   // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
-  if((cpuFunctionType == 0x00) && (cpuSubfunction == 0x03)) { /* S7PayloadDiagnosticMessage */
+  { /* S7PayloadDiagnosticMessage */
     (*_message)->_type = plc4c_s7_read_write_s7_payload_user_data_item_type_plc4c_s7_read_write_s7_payload_diagnostic_message;
                     
     // Simple Field (EventId)
@@ -216,7 +216,7 @@ plc4c_return_code plc4c_s7_read_write_s7_payload_user_data_item_parse(plc4c_spi_
     (*_message)->s7_payload_diagnostic_message_time_stamp = TimeStamp;
 
   } else 
-  if((cpuFunctionType == 0x00) && (cpuSubfunction == 0x05)) { /* S7PayloadAlarm8 */
+  { /* S7PayloadAlarm8 */
     (*_message)->_type = plc4c_s7_read_write_s7_payload_user_data_item_type_plc4c_s7_read_write_s7_payload_alarm8;
                     
     // Simple Field (alarmMessage)
@@ -228,7 +228,7 @@ plc4c_return_code plc4c_s7_read_write_s7_payload_user_data_item_parse(plc4c_spi_
     (*_message)->s7_payload_alarm8_alarm_message = alarmMessage;
 
   } else 
-  if((cpuFunctionType == 0x00) && (cpuSubfunction == 0x06)) { /* S7PayloadNotify */
+  { /* S7PayloadNotify */
     (*_message)->_type = plc4c_s7_read_write_s7_payload_user_data_item_type_plc4c_s7_read_write_s7_payload_notify;
                     
     // Simple Field (alarmMessage)
@@ -240,7 +240,7 @@ plc4c_return_code plc4c_s7_read_write_s7_payload_user_data_item_parse(plc4c_spi_
     (*_message)->s7_payload_notify_alarm_message = alarmMessage;
 
   } else 
-  if((cpuFunctionType == 0x00) && (cpuSubfunction == 0x0c)) { /* S7PayloadAlarmAckInd */
+  { /* S7PayloadAlarmAckInd */
     (*_message)->_type = plc4c_s7_read_write_s7_payload_user_data_item_type_plc4c_s7_read_write_s7_payload_alarm_ack_ind;
                     
     // Simple Field (alarmMessage)
@@ -252,7 +252,7 @@ plc4c_return_code plc4c_s7_read_write_s7_payload_user_data_item_parse(plc4c_spi_
     (*_message)->s7_payload_alarm_ack_ind_alarm_message = alarmMessage;
 
   } else 
-  if((cpuFunctionType == 0x00) && (cpuSubfunction == 0x11)) { /* S7PayloadAlarmSQ */
+  { /* S7PayloadAlarmSQ */
     (*_message)->_type = plc4c_s7_read_write_s7_payload_user_data_item_type_plc4c_s7_read_write_s7_payload_alarm_sq;
                     
     // Simple Field (alarmMessage)
@@ -264,7 +264,7 @@ plc4c_return_code plc4c_s7_read_write_s7_payload_user_data_item_parse(plc4c_spi_
     (*_message)->s7_payload_alarm_sq_alarm_message = alarmMessage;
 
   } else 
-  if((cpuFunctionType == 0x00) && (cpuSubfunction == 0x12)) { /* S7PayloadAlarmS */
+  { /* S7PayloadAlarmS */
     (*_message)->_type = plc4c_s7_read_write_s7_payload_user_data_item_type_plc4c_s7_read_write_s7_payload_alarm_s;
                     
     // Simple Field (alarmMessage)
@@ -276,7 +276,7 @@ plc4c_return_code plc4c_s7_read_write_s7_payload_user_data_item_parse(plc4c_spi_
     (*_message)->s7_payload_alarm_s_alarm_message = alarmMessage;
 
   } else 
-  if((cpuFunctionType == 0x00) && (cpuSubfunction == 0x13)) { /* S7PayloadAlarmSC */
+  { /* S7PayloadAlarmSC */
     (*_message)->_type = plc4c_s7_read_write_s7_payload_user_data_item_type_plc4c_s7_read_write_s7_payload_alarm_sc;
                     
     // Simple Field (alarmMessage)
@@ -288,7 +288,7 @@ plc4c_return_code plc4c_s7_read_write_s7_payload_user_data_item_parse(plc4c_spi_
     (*_message)->s7_payload_alarm_sc_alarm_message = alarmMessage;
 
   } else 
-  if((cpuFunctionType == 0x00) && (cpuSubfunction == 0x16)) { /* S7PayloadNotify8 */
+  { /* S7PayloadNotify8 */
     (*_message)->_type = plc4c_s7_read_write_s7_payload_user_data_item_type_plc4c_s7_read_write_s7_payload_notify8;
                     
     // Simple Field (alarmMessage)
@@ -300,7 +300,7 @@ plc4c_return_code plc4c_s7_read_write_s7_payload_user_data_item_parse(plc4c_spi_
     (*_message)->s7_payload_notify8_alarm_message = alarmMessage;
 
   } else 
-  if((cpuFunctionType == 0x04) && (cpuSubfunction == 0x01)) { /* S7PayloadUserDataItemCpuFunctionReadSzlRequest */
+  { /* S7PayloadUserDataItemCpuFunctionReadSzlRequest */
     (*_message)->_type = plc4c_s7_read_write_s7_payload_user_data_item_type_plc4c_s7_read_write_s7_payload_user_data_item_cpu_function_read_szl_request;
                     
     // Simple Field (szlId)
@@ -322,7 +322,7 @@ plc4c_return_code plc4c_s7_read_write_s7_payload_user_data_item_parse(plc4c_spi_
     (*_message)->s7_payload_user_data_item_cpu_function_read_szl_request_szl_index = szlIndex;
 
   } else 
-  if((cpuFunctionType == 0x08) && (cpuSubfunction == 0x01)) { /* S7PayloadUserDataItemCpuFunctionReadSzlResponse */
+  { /* S7PayloadUserDataItemCpuFunctionReadSzlResponse */
     (*_message)->_type = plc4c_s7_read_write_s7_payload_user_data_item_type_plc4c_s7_read_write_s7_payload_user_data_item_cpu_function_read_szl_response;
                     
     // Simple Field (szlId)
@@ -389,7 +389,7 @@ plc4c_return_code plc4c_s7_read_write_s7_payload_user_data_item_parse(plc4c_spi_
     (*_message)->s7_payload_user_data_item_cpu_function_read_szl_response_items = items;
 
   } else 
-  if((cpuFunctionType == 0x04) && (cpuSubfunction == 0x02)) { /* S7PayloadUserDataItemCpuFunctionMsgSubscription */
+  { /* S7PayloadUserDataItemCpuFunctionMsgSubscription */
     (*_message)->_type = plc4c_s7_read_write_s7_payload_user_data_item_type_plc4c_s7_read_write_s7_payload_user_data_item_cpu_function_msg_subscription;
                     
     // Simple Field (Subscription)
@@ -458,10 +458,10 @@ plc4c_return_code plc4c_s7_read_write_s7_payload_user_data_item_parse(plc4c_spi_
     }
 
   } else 
-  if((cpuFunctionType == 0x08) && (cpuSubfunction == 0x02) && (dataLength == 0x00)) { /* S7PayloadUserDataItemCpuFunctionMsgSubscriptionResponse */
+  { /* S7PayloadUserDataItemCpuFunctionMsgSubscriptionResponse */
     (*_message)->_type = plc4c_s7_read_write_s7_payload_user_data_item_type_plc4c_s7_read_write_s7_payload_user_data_item_cpu_function_msg_subscription_response;
   } else 
-  if((cpuFunctionType == 0x08) && (cpuSubfunction == 0x02) && (dataLength == 0x02)) { /* S7PayloadUserDataItemCpuFunctionMsgSubscriptionSysResponse */
+  { /* S7PayloadUserDataItemCpuFunctionMsgSubscriptionSysResponse */
     (*_message)->_type = plc4c_s7_read_write_s7_payload_user_data_item_type_plc4c_s7_read_write_s7_payload_user_data_item_cpu_function_msg_subscription_sys_response;
                     
     // Simple Field (result)
@@ -483,7 +483,7 @@ plc4c_return_code plc4c_s7_read_write_s7_payload_user_data_item_parse(plc4c_spi_
     (*_message)->s7_payload_user_data_item_cpu_function_msg_subscription_sys_response_reserved01 = reserved01;
 
   } else 
-  if((cpuFunctionType == 0x08) && (cpuSubfunction == 0x02) && (dataLength == 0x05)) { /* S7PayloadUserDataItemCpuFunctionMsgSubscriptionAlarmResponse */
+  { /* S7PayloadUserDataItemCpuFunctionMsgSubscriptionAlarmResponse */
     (*_message)->_type = plc4c_s7_read_write_s7_payload_user_data_item_type_plc4c_s7_read_write_s7_payload_user_data_item_cpu_function_msg_subscription_alarm_response;
                     
     // Simple Field (result)
@@ -535,7 +535,7 @@ plc4c_return_code plc4c_s7_read_write_s7_payload_user_data_item_parse(plc4c_spi_
     (*_message)->s7_payload_user_data_item_cpu_function_msg_subscription_alarm_response_reserved03 = reserved03;
 
   } else 
-  if((cpuFunctionType == 0x04) && (cpuSubfunction == 0x0b)) { /* S7PayloadUserDataItemCpuFunctionAlarmAck */
+  { /* S7PayloadUserDataItemCpuFunctionAlarmAck */
     (*_message)->_type = plc4c_s7_read_write_s7_payload_user_data_item_type_plc4c_s7_read_write_s7_payload_user_data_item_cpu_function_alarm_ack;
                     
     // Simple Field (functionId)
@@ -579,7 +579,7 @@ plc4c_return_code plc4c_s7_read_write_s7_payload_user_data_item_parse(plc4c_spi_
     (*_message)->s7_payload_user_data_item_cpu_function_alarm_ack_message_objects = messageObjects;
 
   } else 
-  if((cpuFunctionType == 0x08) && (cpuSubfunction == 0x0b)) { /* S7PayloadUserDataItemCpuFunctionAlarmAckResponse */
+  { /* S7PayloadUserDataItemCpuFunctionAlarmAckResponse */
     (*_message)->_type = plc4c_s7_read_write_s7_payload_user_data_item_type_plc4c_s7_read_write_s7_payload_user_data_item_cpu_function_alarm_ack_response;
                     
     // Simple Field (functionId)
@@ -623,7 +623,7 @@ plc4c_return_code plc4c_s7_read_write_s7_payload_user_data_item_parse(plc4c_spi_
     (*_message)->s7_payload_user_data_item_cpu_function_alarm_ack_response_message_objects = messageObjects;
 
   } else 
-  if((cpuFunctionType == 0x04) && (cpuSubfunction == 0x13)) { /* S7PayloadUserDataItemCpuFunctionAlarmQuery */
+  { /* S7PayloadUserDataItemCpuFunctionAlarmQuery */
     (*_message)->_type = plc4c_s7_read_write_s7_payload_user_data_item_type_plc4c_s7_read_write_s7_payload_user_data_item_cpu_function_alarm_query;
                     
     // Const Field (functionId)
@@ -735,7 +735,7 @@ plc4c_return_code plc4c_s7_read_write_s7_payload_user_data_item_parse(plc4c_spi_
     (*_message)->s7_payload_user_data_item_cpu_function_alarm_query_alarm_type = *alarmType;
 
   } else 
-  if((cpuFunctionType == 0x08) && (cpuSubfunction == 0x13)) { /* S7PayloadUserDataItemCpuFunctionAlarmQueryResponse */
+  { /* S7PayloadUserDataItemCpuFunctionAlarmQueryResponse */
     (*_message)->_type = plc4c_s7_read_write_s7_payload_user_data_item_type_plc4c_s7_read_write_s7_payload_user_data_item_cpu_function_alarm_query_response;
                     
     // Const Field (functionId)
diff --git a/plc4c/generated-sources/s7/src/s7_var_request_parameter_item.c b/plc4c/generated-sources/s7/src/s7_var_request_parameter_item.c
index 2bfb5f4..35b36d0 100644
--- a/plc4c/generated-sources/s7/src/s7_var_request_parameter_item.c
+++ b/plc4c/generated-sources/s7/src/s7_var_request_parameter_item.c
@@ -28,7 +28,7 @@
 // enum constant to directly access a given types discriminator values)
 const plc4c_s7_read_write_s7_var_request_parameter_item_discriminator plc4c_s7_read_write_s7_var_request_parameter_item_discriminators[] = {
   {/* plc4c_s7_read_write_s7_var_request_parameter_item_address */
-   .itemType = 0x12 }
+   .itemType = DefaultHexadecimalLiteral{hexString=0x12} }
 
 };
 
@@ -65,7 +65,7 @@ plc4c_return_code plc4c_s7_read_write_s7_var_request_parameter_item_parse(plc4c_
   }
 
   // Switch Field (Depending on the discriminator values, passes the instantiation to a sub-type)
-  if(itemType == 0x12) { /* S7VarRequestParameterItemAddress */
+  { /* S7VarRequestParameterItemAddress */
     (*_message)->_type = plc4c_s7_read_write_s7_var_request_parameter_item_type_plc4c_s7_read_write_s7_var_request_parameter_item_address;
                     
     // Implicit Field (itemLength) (Used for parsing, but it's value is not stored as it's implicitly given by the objects content)