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 2020/06/17 18:27:18 UTC
[plc4x] branch feature/c-code-generation-tagged-unions updated: -
Refactored the code generation to use pointers for complex types and
arrays/lists - Worked on the expression builders to correctly access
indexed items of lists
This is an automated email from the ASF dual-hosted git repository.
cdutz pushed a commit to branch feature/c-code-generation-tagged-unions
in repository https://gitbox.apache.org/repos/asf/plc4x.git
The following commit(s) were added to refs/heads/feature/c-code-generation-tagged-unions by this push:
new 0d23c5d - Refactored the code generation to use pointers for complex types and arrays/lists - Worked on the expression builders to correctly access indexed items of lists
0d23c5d is described below
commit 0d23c5d2d27adbbf8f343d54446d4c74d573a790
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Wed Jun 17 20:27:09 2020 +0200
- Refactored the code generation to use pointers for complex types and arrays/lists
- Worked on the expression builders to correctly access indexed items of lists
---
.../BaseFreemarkerLanguageTemplateHelper.java | 52 +++++++
.../plc4x/language/c/CLanguageTemplateHelper.java | 83 +++++++----
.../resources/templates/c/pojo-template-c.ftlh | 40 +++---
.../resources/templates/c/pojo-template-h.ftlh | 12 +-
sandbox/plc4c/api/include/plc4c/utils/list.h | 2 +
.../generated-sources/modbus/includes/modbus_pdu.h | 30 ++--
.../modbus_pdu_read_file_record_response_item.h | 2 +-
.../modbus_pdu_write_file_record_request_item.h | 2 +-
.../modbus_pdu_write_file_record_response_item.h | 2 +-
.../modbus/includes/modbus_serial_adu.h | 2 +-
.../modbus/includes/modbus_tcp_adu.h | 2 +-
.../generated-sources/modbus/src/modbus_pdu.c | 154 +++++++++++++--------
.../modbus_pdu_read_file_record_response_item.c | 9 +-
.../modbus_pdu_write_file_record_request_item.c | 9 +-
.../modbus_pdu_write_file_record_response_item.c | 9 +-
.../modbus/src/modbus_serial_adu.c | 2 +-
.../generated-sources/modbus/src/modbus_tcp_adu.c | 2 +-
.../generated-sources/s7/includes/cotp_packet.h | 2 +-
.../generated-sources/s7/includes/cotp_parameter.h | 2 +-
.../generated-sources/s7/includes/s7_parameter.h | 6 +-
.../generated-sources/s7/includes/s7_payload.h | 8 +-
.../s7/includes/s7_payload_user_data_item.h | 4 +-
.../s7/includes/s7_var_payload_data_item.h | 2 +-
.../s7/includes/s7_var_request_parameter_item.h | 2 +-
.../s7/includes/szl_data_tree_item.h | 2 +-
.../generated-sources/s7/includes/tpkt_packet.h | 2 +-
.../plc4c/generated-sources/s7/src/cotp_packet.c | 11 +-
.../generated-sources/s7/src/cotp_parameter.c | 10 +-
.../plc4c/generated-sources/s7/src/s7_parameter.c | 36 +++--
.../plc4c/generated-sources/s7/src/s7_payload.c | 56 ++++----
.../s7/src/s7_payload_user_data_item.c | 14 +-
.../s7/src/s7_var_payload_data_item.c | 10 +-
.../s7/src/s7_var_request_parameter_item.c | 2 +-
.../generated-sources/s7/src/szl_data_tree_item.c | 10 +-
.../plc4c/generated-sources/s7/src/tpkt_packet.c | 2 +-
.../spi/include/plc4c/spi/evaluation_helper.h | 2 +-
sandbox/plc4c/spi/src/evaluation_helper.c | 4 +-
37 files changed, 377 insertions(+), 224 deletions(-)
diff --git a/build-utils/language-base-freemarker/src/main/java/org/apache/plc4x/plugins/codegenerator/protocol/freemarker/BaseFreemarkerLanguageTemplateHelper.java b/build-utils/language-base-freemarker/src/main/java/org/apache/plc4x/plugins/codegenerator/protocol/freemarker/BaseFreemarkerLanguageTemplateHelper.java
index 7e576a9..093e726 100644
--- a/build-utils/language-base-freemarker/src/main/java/org/apache/plc4x/plugins/codegenerator/protocol/freemarker/BaseFreemarkerLanguageTemplateHelper.java
+++ b/build-utils/language-base-freemarker/src/main/java/org/apache/plc4x/plugins/codegenerator/protocol/freemarker/BaseFreemarkerLanguageTemplateHelper.java
@@ -286,18 +286,70 @@ public abstract class BaseFreemarkerLanguageTemplateHelper implements Freemarker
return field instanceof AbstractField;
}
+ public boolean isArrayField(Field field) {
+ return field instanceof ArrayField;
+ }
+
+ public boolean isChecksumField(Field field) {
+ return field instanceof ChecksumField;
+ }
+
+ public boolean isConstField(Field field) {
+ return field instanceof ConstField;
+ }
+
+ public boolean isDiscriminatorField(Field field) {
+ return field instanceof DiscriminatorField;
+ }
+
public boolean isEnumField(Field field) {
return field instanceof EnumField;
}
+ public boolean isImplicitField(Field field) {
+ return field instanceof ImplicitField;
+ }
+
+ public boolean isManualArrayField(Field field) {
+ return field instanceof ManualArrayField;
+ }
+
+ public boolean isNamedField(Field field) {
+ return field instanceof NamedField;
+ }
+
public boolean isOptionalField(Field field) {
return field instanceof OptionalField;
}
+ public boolean isPaddingField(Field field) {
+ return field instanceof PaddingField;
+ }
+
+ public boolean isPropertyField(Field field) {
+ return field instanceof PropertyField;
+ }
+
+ public boolean isReservedField(Field field) {
+ return field instanceof ReservedField;
+ }
+
+ public boolean isSimpleField(Field field) {
+ return field instanceof SimpleField;
+ }
+
public boolean isSwitchField(Field field) {
return field instanceof SwitchField;
}
+ public boolean isTypedField(Field field) {
+ return field instanceof TypedField;
+ }
+
+ public boolean isVirtualField(Field field) {
+ return field instanceof VirtualField;
+ }
+
public boolean isCountArrayField(Field field) {
if(field instanceof ArrayField) {
ArrayField arrayField = (ArrayField) field;
diff --git a/build-utils/language-c/src/main/java/org/apache/plc4x/language/c/CLanguageTemplateHelper.java b/build-utils/language-c/src/main/java/org/apache/plc4x/language/c/CLanguageTemplateHelper.java
index 7cec423..ab8808a 100644
--- a/build-utils/language-c/src/main/java/org/apache/plc4x/language/c/CLanguageTemplateHelper.java
+++ b/build-utils/language-c/src/main/java/org/apache/plc4x/language/c/CLanguageTemplateHelper.java
@@ -480,7 +480,6 @@ public class CLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelpe
VariableLiteral vl = (VariableLiteral) term;
if("CAST".equals(vl.getName())) {
- StringBuilder sb = new StringBuilder();
if((vl.getArgs() == null) || (vl.getArgs().size() != 2)) {
throw new RuntimeException("A CAST expression expects exactly two arguments.");
}
@@ -491,28 +490,25 @@ public class CLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelpe
// If we're casting to a sub-type of a discriminated value, we got to cast to the parent
// type instead and add the name of the sub-type as prefix to the property we're tryging to
// access next.
- String castToType;
- String restExpression;
+ StringBuilder sb = new StringBuilder();
+ sb.append("((plc4c_");
if(castType.getParentType() != null) {
- castToType = castType.getParentType().getName();
- if(vl.getChild() != null) {
- // Change the name of the property to contain the sub-type-prefix.
- restExpression = "." + camelCaseToSnakeCase(castType.getName()) + "_" + toVariableExpressionRest(vl.getChild());
- } else {
- restExpression = "";
- }
+ sb.append(getCTypeName(castType.getParentType().getName()));
} else {
- castToType = castType.getName();
- if(vl.getChild() != null) {
- restExpression = "." + toVariableExpressionRest(vl.getChild());
+ sb.append(getCTypeName(castType.getName()));
+ }
+ sb.append(requiresPointerAccess(baseType, sourceTerm.getName()) ? "*" : "").append(") (");
+ sb.append(toVariableParseExpression(baseType, field, sourceTerm, parserArguments)).append("))");
+ if(vl.getChild() != null) {
+ if(castType.getParentType() != null) {
+ // Change the name of the property to contain the sub-type-prefix.
+ sb.append(requiresPointerAccess(baseType, sourceTerm.getName()) ? "->" : ".").append(camelCaseToSnakeCase(castType.getName())).append("_");
+ appendVariableExpressionRest(sb, vl.getChild());
} else {
- restExpression = "";
+ sb.append(requiresPointerAccess(baseType, sourceTerm.getName()) ? "->" : ".");
+ appendVariableExpressionRest(sb, vl.getChild());
}
}
- sb.append("((plc4c_").append(getCTypeName(castToType)).append(") (")
- .append(requiresPointerAccess(baseType, sourceTerm.getName()) ? "*" : "")
- .append(toVariableParseExpression(baseType, field, sourceTerm, parserArguments)).append("))")
- .append(restExpression);
return sb.toString();
}
// Any name that is full upper-case is considered a function call.
@@ -535,7 +531,11 @@ public class CLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelpe
if (vl.getIndex() != VariableLiteral.NO_INDEX) {
sb.append("[").append(vl.getIndex()).append("]");
}
- return sb.toString() + ((vl.getChild() != null) ? "." + toVariableExpressionRest(vl.getChild()) : "");
+ if(vl.getChild() != null) {
+ sb.append(".");
+ appendVariableExpressionRest(sb, vl.getChild());
+ }
+ return sb.toString();
}
final String name = vl.getName();
@@ -587,7 +587,12 @@ public class CLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelpe
return sb.toString();
}
// Else ... generate a simple access path.
- return vl.getName() + ((vl.getChild() != null) ? "." + toVariableExpressionRest(vl.getChild()) : "");
+ StringBuilder sb = new StringBuilder(vl.getName());
+ if(vl.getChild() != null) {
+ sb.append(".");
+ appendVariableExpressionRest(sb, vl.getChild());
+ }
+ return sb.toString();
}
private String toVariableSerializationExpression(ComplexTypeDefinition baseType, Field field, Term term, Argument[] serialzerArguments) {
@@ -619,7 +624,11 @@ public class CLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelpe
}
}
if (isSerializerArg) {
- sb.append(va.getName() + ((va.getChild() != null) ? "." + toVariableExpressionRest(va.getChild()) : ""));
+ sb.append(va.getName());
+ if(va.getChild() != null) {
+ sb.append(".");
+ appendVariableExpressionRest(sb, va.getChild());
+ }
} else if (isTypeArg) {
String part = va.getChild().getName();
switch (part) {
@@ -698,7 +707,11 @@ public class CLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelpe
}
}
if (isSerializerArg) {
- sb.append(va.getName() + ((va.getChild() != null) ? "." + toVariableExpressionRest(va.getChild()) : ""));
+ sb.append(va.getName());
+ if(va.getChild() != null) {
+ sb.append(".");
+ appendVariableExpressionRest(sb, va.getChild());
+ }
} else if (isTypeArg) {
String part = va.getChild().getName();
switch (part) {
@@ -747,7 +760,12 @@ public class CLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelpe
}
}
if (isSerializerArg) {
- return vl.getName() + ((vl.getChild() != null) ? "." + toVariableExpressionRest(vl.getChild()) : "");
+ StringBuilder sb = new StringBuilder(vl.getName());
+ if(vl.getChild() != null) {
+ sb.append(".");
+ appendVariableExpressionRest(sb, vl.getChild());
+ }
+ return sb.toString();
} else if (isTypeArg) {
String part = vl.getChild().getName();
switch (part) {
@@ -772,13 +790,24 @@ public class CLanguageTemplateHelper extends BaseFreemarkerLanguageTemplateHelpe
return "";
}
} else {
- return "_value." + toVariableExpressionRest(vl);
+ StringBuilder sb = new StringBuilder("_value");
+ appendVariableExpressionRest(sb, vl);
+ return sb.toString();
}
}
- private String toVariableExpressionRest(VariableLiteral vl) {
- return camelCaseToSnakeCase(vl.getName()) + ((vl.isIndexed() ? "[" + vl.getIndex() + "]" : "") +
- ((vl.getChild() != null) ? "." + toVariableExpressionRest(vl.getChild()) : ""));
+ private void appendVariableExpressionRest(StringBuilder sb, VariableLiteral vl) {
+ if(vl.isIndexed()) {
+ sb.insert(0, "plc4c_utils_list_get(");
+ sb.append(camelCaseToSnakeCase(vl.getName()));
+ sb.append(", ").append(vl.getIndex()).append(")");
+ } else {
+ sb.append(camelCaseToSnakeCase(vl.getName()));
+ }
+ if(vl.getChild() != null) {
+ sb.append(".");
+ appendVariableExpressionRest(sb, vl.getChild());
+ }
}
public int getNumBits(SimpleTypeReference simpleTypeReference) {
diff --git a/build-utils/language-c/src/main/resources/templates/c/pojo-template-c.ftlh b/build-utils/language-c/src/main/resources/templates/c/pojo-template-c.ftlh
index fd097e1..7e20914 100644
--- a/build-utils/language-c/src/main/resources/templates/c/pojo-template-c.ftlh
+++ b/build-utils/language-c/src/main/resources/templates/c/pojo-template-c.ftlh
@@ -110,7 +110,10 @@ plc4c_return_code plc4c_${helper.getCTypeName(type.name)}_parse(plc4c_spi_read_b
curPos = plc4c_spi_read_get_pos(buf) - startPos;
</#if>
<#-- In all other cases do we have to work with a list, that is later converted to an array -->
- plc4c_list ${arrayField.name};
+ plc4c_list* ${arrayField.name} = malloc(sizeof(plc4c_list));
+ if(${arrayField.name} == NULL) {
+ return NO_MEMORY;
+ }
{
<#if helper.isCountArrayField(field)>
// Count array
@@ -119,15 +122,14 @@ plc4c_return_code plc4c_${helper.getCTypeName(type.name)}_parse(plc4c_spi_read_b
<#if !helper.isSimpleTypeReference(arrayField.type)>bool lastItem = curItem == (itemCount - 1);</#if>
<#-- Inizialize a local variable with the simple type (Intentionally keeping the java-style names so they can be used in expressions) -->
<#if helper.isSimpleTypeReference(arrayField.type)>
- ${helper.getLanguageTypeNameForTypeReference(arrayField.type)} value = ${helper.getReadBufferReadMethodCall(arrayField.type)};
- plc4c_utils_list_insert_head_value(&${arrayField.name}, &value);
+ ${helper.getLanguageTypeNameForTypeReference(arrayField.type)} _value = ${helper.getReadBufferReadMethodCall(arrayField.type)};
+ plc4c_utils_list_insert_head_value(${arrayField.name}, &_value);
<#else>
<#-- Inizialize a local variable with the complex type (Intentionally keeping the java-style names so they can be used in expressions) -->
- ${helper.getLanguageTypeNameForField(field)}* value = NULL;
- plc4c_${helper.getCTypeName(arrayField.type.name)}_parse(buf<#if field.params?has_content>, <#list field.params as parserTerm>${helper.toParseExpression(baseType, field, parserTerm, type.parserArguments)}<#sep>, </#sep></#list></#if>, (void*) &value);
- plc4c_utils_list_insert_head_value(&${arrayField.name}, value);
+ ${helper.getLanguageTypeNameForField(field)}* _value = NULL;
+ plc4c_${helper.getCTypeName(arrayField.type.name)}_parse(buf<#if field.params?has_content>, <#list field.params as parserTerm>${helper.toParseExpression(baseType, field, parserTerm, type.parserArguments)}<#sep>, </#sep></#list></#if>, (void*) &_value);
+ plc4c_utils_list_insert_head_value(${arrayField.name}, _value);
</#if>
- plc4c_utils_list_insert_head_value(&${arrayField.name}, &value);
}
<#-- For a length array, we read data till the read position of the buffer reaches a given position -->
<#elseif helper.isLengthArrayField(field)>
@@ -137,13 +139,13 @@ plc4c_return_code plc4c_${helper.getCTypeName(type.name)}_parse(plc4c_spi_read_b
while(plc4c_spi_read_get_pos(buf) < ${arrayField.name}EndPos) {
<#-- Inizialize a local variable with the simple type (Intentionally keeping the java-style names so they can be used in expressions) -->
<#if helper.isSimpleTypeReference(arrayField.type)>
- ${helper.getLanguageTypeNameForTypeReference(arrayField.type)} value = ${helper.getReadBufferReadMethodCall(arrayField.type)};
- plc4c_utils_list_insert_head_value(&${arrayField.name}, &value);
+ ${helper.getLanguageTypeNameForTypeReference(arrayField.type)} _value = ${helper.getReadBufferReadMethodCall(arrayField.type)};
+ plc4c_utils_list_insert_head_value(${arrayField.name}, &_value);
<#else>
<#-- Inizialize a local variable with the complex type (Intentionally keeping the java-style names so they can be used in expressions) -->
- ${helper.getLanguageTypeNameForField(field)}* value = NULL;
- plc4c_${helper.getCTypeName(arrayField.type.name)}_parse(buf<#if field.params?has_content>, <#list field.params as parserTerm>${helper.toParseExpression(baseType, field, parserTerm, type.parserArguments)}<#sep>, </#sep></#list></#if>, (void*) &value);
- plc4c_utils_list_insert_head_value(&${arrayField.name}, value);
+ ${helper.getLanguageTypeNameForField(field)}* _value = NULL;
+ plc4c_${helper.getCTypeName(arrayField.type.name)}_parse(buf<#if field.params?has_content>, <#list field.params as parserTerm>${helper.toParseExpression(baseType, field, parserTerm, type.parserArguments)}<#sep>, </#sep></#list></#if>, (void*) &_value);
+ plc4c_utils_list_insert_head_value(${arrayField.name}, _value);
</#if>
<#-- After parsing, update the current position, but only if it's needed -->
<#if arrayField.loopExpression.contains("curPos")>
@@ -156,13 +158,13 @@ plc4c_return_code plc4c_${helper.getCTypeName(type.name)}_parse(plc4c_spi_read_b
while(!((boolean) (${helper.toParseExpression(baseType, arrayField, arrayField.loopExpression, type.parserArguments)}))) {
<#-- Inizialize a local variable with the simple type (Intentionally keeping the java-style names so they can be used in expressions) -->
<#if helper.isSimpleTypeReference(arrayField.type)>
- ${helper.getLanguageTypeNameForTypeReference(arrayField.type)} value = ${helper.getReadBufferReadMethodCall(arrayField.type)};
- plc4c_utils_list_insert_head_value(&${arrayField.name}, &value);
+ ${helper.getLanguageTypeNameForTypeReference(arrayField.type)} _value = ${helper.getReadBufferReadMethodCall(arrayField.type)};
+ plc4c_utils_list_insert_head_value(${arrayField.name}, &_value);
<#else>
<#-- Inizialize a local variable with the complex type (Intentionally keeping the java-style names so they can be used in expressions) -->
- ${helper.getLanguageTypeNameForField(field)}* value = NULL;
- plc4c_${helper.getCTypeName(arrayField.type.name)}_parse(buf<#if field.params?has_content>, <#list field.params as parserTerm>${helper.toParseExpression(baseType, field, parserTerm, type.parserArguments)}<#sep>, </#sep></#list></#if>, (void*) &value);
- plc4c_utils_list_insert_head_value(&${arrayField.name}, value);
+ ${helper.getLanguageTypeNameForField(field)}* _value = NULL;
+ plc4c_${helper.getCTypeName(arrayField.type.name)}_parse(buf<#if field.params?has_content>, <#list field.params as parserTerm>${helper.toParseExpression(baseType, field, parserTerm, type.parserArguments)}<#sep>, </#sep></#list></#if>, (void*) &_value);
+ plc4c_utils_list_insert_head_value(${arrayField.name}, _value);
</#if>
<#-- After parsing, update the current position, but only if it's needed -->
<#if arrayField.loopExpression.contains("curPos")>
@@ -229,7 +231,7 @@ plc4c_return_code plc4c_${helper.getCTypeName(type.name)}_parse(plc4c_spi_read_b
<#case "manual">
<#assign manualField = field>
- // Manual Field (${manualField.name})
+ // Manual Field (${manualField.name})<#-- check if complex -->
${helper.getLanguageTypeNameForField(field)} ${manualField.name} = (${helper.getLanguageTypeNameForField(field)}) (${helper.toParseExpression(baseType, manualField, manualField.parseExpression, type.parserArguments)});
(*_message)-><@fieldName baseType=baseType field=manualField/> = ${manualField.name};
<#break>
@@ -288,7 +290,7 @@ plc4c_return_code plc4c_${helper.getCTypeName(type.name)}_parse(plc4c_spi_read_b
${helper.getLanguageTypeNameForField(field)} ${simpleField.name} = ${helper.getReadBufferReadMethodCall(simpleField.type)};
<#else>
<#-- Inizialize a local variable with the complex type (Intentionally keeping the java-style names so they can be used in expressions) -->
- ${helper.getLanguageTypeNameForField(field)} ${simpleField.name};
+ ${helper.getLanguageTypeNameForField(field)}* ${simpleField.name};
plc4c_${helper.getCTypeName(simpleField.type.name)}_parse(buf<#if simpleField.params?has_content>, <#list simpleField.params as parserTerm>${helper.toParseExpression(baseType, simpleField, parserTerm, type.parserArguments)}<#sep>, </#sep></#list></#if>, (void*) &${simpleField.name});
</#if>
(*_message)-><@fieldName baseType=baseType field=simpleField/> = ${simpleField.name};
diff --git a/build-utils/language-c/src/main/resources/templates/c/pojo-template-h.ftlh b/build-utils/language-c/src/main/resources/templates/c/pojo-template-h.ftlh
index bb86055..dad45b8 100644
--- a/build-utils/language-c/src/main/resources/templates/c/pojo-template-h.ftlh
+++ b/build-utils/language-c/src/main/resources/templates/c/pojo-template-h.ftlh
@@ -118,10 +118,10 @@ struct plc4c_${helper.getCTypeName(type.name)} {
<#list field.cases as case>
struct { /* ${case.name} */
<#list case.propertyFields as caseField>
- <#if helper.isOptionalField(caseField)>
- ${helper.getLanguageTypeNameForField(caseField)}* ${helper.camelCaseToSnakeCase(case.name)}_${helper.camelCaseToSnakeCase(caseField.name)};
- <#else>
+ <#if (helper.isSimpleTypeReference(caseField.type) || helper.isEnumField(caseField)) && !helper.isOptionalField(caseField) && !helper.isArrayField(caseField) && !helper.isManualArrayField(caseField)>
${helper.getLanguageTypeNameForField(caseField)} ${helper.camelCaseToSnakeCase(case.name)}_${helper.camelCaseToSnakeCase(caseField.name)}${helper.getTypeSizeForField(caseField)}<#if field.loopType??>${helper.getLoopExpressionSuffix(caseField)}</#if>;
+ <#else>
+ ${helper.getLanguageTypeNameForField(caseField)}* ${helper.camelCaseToSnakeCase(case.name)}_${helper.camelCaseToSnakeCase(caseField.name)};
</#if>
</#list>
};
@@ -129,10 +129,10 @@ struct plc4c_${helper.getCTypeName(type.name)} {
};
<#elseif helper.isEnumField(field)>
${helper.getLanguageTypeNameForField(field)} ${helper.camelCaseToSnakeCase(field.name)};
- <#elseif helper.isOptionalField(field)>
- ${helper.getLanguageTypeNameForField(field)}* ${helper.camelCaseToSnakeCase(field.name)};
- <#else>
+ <#elseif (helper.isSimpleTypeReference(field.type) || helper.isEnumField(field)) && !helper.isOptionalField(field) && !helper.isArrayField(field) && !helper.isManualArrayField(field)>
${helper.getLanguageTypeNameForField(field)} ${helper.camelCaseToSnakeCase(field.name)}${helper.getTypeSizeForField(field)}<#if field.loopType??>${helper.getLoopExpressionSuffix(field)}</#if>;
+ <#else>
+ ${helper.getLanguageTypeNameForField(field)}* ${helper.camelCaseToSnakeCase(field.name)};
</#if>
</#list>
};
diff --git a/sandbox/plc4c/api/include/plc4c/utils/list.h b/sandbox/plc4c/api/include/plc4c/utils/list.h
index f0df538..2d0724c 100644
--- a/sandbox/plc4c/api/include/plc4c/utils/list.h
+++ b/sandbox/plc4c/api/include/plc4c/utils/list.h
@@ -49,6 +49,8 @@ bool plc4c_utils_list_empty(plc4c_list *list);
bool plc4c_utils_list_contains(plc4c_list *list, plc4c_list_element *element);
+bool plc4c_utils_list_get(plc4c_list *list, size_t element_index);
+
void plc4c_utils_list_insert_head(plc4c_list *list,
plc4c_list_element *element);
diff --git a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu.h b/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu.h
index 38877d9..b71cbe2 100644
--- a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu.h
+++ b/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu.h
@@ -95,14 +95,14 @@ struct plc4c_modbus_read_write_modbus_pdu {
uint16_t modbus_pdu_read_discrete_inputs_request_quantity;
};
struct { /* ModbusPDUReadDiscreteInputsResponse */
- plc4c_list modbus_pdu_read_discrete_inputs_response_value;
+ plc4c_list* modbus_pdu_read_discrete_inputs_response_value;
};
struct { /* ModbusPDUReadCoilsRequest */
uint16_t modbus_pdu_read_coils_request_starting_address;
uint16_t modbus_pdu_read_coils_request_quantity;
};
struct { /* ModbusPDUReadCoilsResponse */
- plc4c_list modbus_pdu_read_coils_response_value;
+ plc4c_list* modbus_pdu_read_coils_response_value;
};
struct { /* ModbusPDUWriteSingleCoilRequest */
uint16_t modbus_pdu_write_single_coil_request_address;
@@ -115,7 +115,7 @@ struct plc4c_modbus_read_write_modbus_pdu {
struct { /* ModbusPDUWriteMultipleCoilsRequest */
uint16_t modbus_pdu_write_multiple_coils_request_starting_address;
uint16_t modbus_pdu_write_multiple_coils_request_quantity;
- plc4c_list modbus_pdu_write_multiple_coils_request_value;
+ plc4c_list* modbus_pdu_write_multiple_coils_request_value;
};
struct { /* ModbusPDUWriteMultipleCoilsResponse */
uint16_t modbus_pdu_write_multiple_coils_response_starting_address;
@@ -126,14 +126,14 @@ struct plc4c_modbus_read_write_modbus_pdu {
uint16_t modbus_pdu_read_input_registers_request_quantity;
};
struct { /* ModbusPDUReadInputRegistersResponse */
- plc4c_list modbus_pdu_read_input_registers_response_value;
+ plc4c_list* modbus_pdu_read_input_registers_response_value;
};
struct { /* ModbusPDUReadHoldingRegistersRequest */
uint16_t modbus_pdu_read_holding_registers_request_starting_address;
uint16_t modbus_pdu_read_holding_registers_request_quantity;
};
struct { /* ModbusPDUReadHoldingRegistersResponse */
- plc4c_list modbus_pdu_read_holding_registers_response_value;
+ plc4c_list* modbus_pdu_read_holding_registers_response_value;
};
struct { /* ModbusPDUWriteSingleRegisterRequest */
uint16_t modbus_pdu_write_single_register_request_address;
@@ -146,7 +146,7 @@ struct plc4c_modbus_read_write_modbus_pdu {
struct { /* ModbusPDUWriteMultipleHoldingRegistersRequest */
uint16_t modbus_pdu_write_multiple_holding_registers_request_starting_address;
uint16_t modbus_pdu_write_multiple_holding_registers_request_quantity;
- plc4c_list modbus_pdu_write_multiple_holding_registers_request_value;
+ plc4c_list* modbus_pdu_write_multiple_holding_registers_request_value;
};
struct { /* ModbusPDUWriteMultipleHoldingRegistersResponse */
uint16_t modbus_pdu_write_multiple_holding_registers_response_starting_address;
@@ -157,10 +157,10 @@ struct plc4c_modbus_read_write_modbus_pdu {
uint16_t modbus_pdu_read_write_multiple_holding_registers_request_read_quantity;
uint16_t modbus_pdu_read_write_multiple_holding_registers_request_write_starting_address;
uint16_t modbus_pdu_read_write_multiple_holding_registers_request_write_quantity;
- plc4c_list modbus_pdu_read_write_multiple_holding_registers_request_value;
+ plc4c_list* modbus_pdu_read_write_multiple_holding_registers_request_value;
};
struct { /* ModbusPDUReadWriteMultipleHoldingRegistersResponse */
- plc4c_list modbus_pdu_read_write_multiple_holding_registers_response_value;
+ plc4c_list* modbus_pdu_read_write_multiple_holding_registers_response_value;
};
struct { /* ModbusPDUMaskWriteHoldingRegisterRequest */
uint16_t modbus_pdu_mask_write_holding_register_request_reference_address;
@@ -176,19 +176,19 @@ struct plc4c_modbus_read_write_modbus_pdu {
uint16_t modbus_pdu_read_fifo_queue_request_fifo_pointer_address;
};
struct { /* ModbusPDUReadFifoQueueResponse */
- plc4c_list modbus_pdu_read_fifo_queue_response_fifo_value;
+ plc4c_list* modbus_pdu_read_fifo_queue_response_fifo_value;
};
struct { /* ModbusPDUReadFileRecordRequest */
- plc4c_list modbus_pdu_read_file_record_request_items;
+ plc4c_list* modbus_pdu_read_file_record_request_items;
};
struct { /* ModbusPDUReadFileRecordResponse */
- plc4c_list modbus_pdu_read_file_record_response_items;
+ plc4c_list* modbus_pdu_read_file_record_response_items;
};
struct { /* ModbusPDUWriteFileRecordRequest */
- plc4c_list modbus_pdu_write_file_record_request_items;
+ plc4c_list* modbus_pdu_write_file_record_request_items;
};
struct { /* ModbusPDUWriteFileRecordResponse */
- plc4c_list modbus_pdu_write_file_record_response_items;
+ plc4c_list* modbus_pdu_write_file_record_response_items;
};
struct { /* ModbusPDUReadExceptionStatusRequest */
};
@@ -205,12 +205,12 @@ struct plc4c_modbus_read_write_modbus_pdu {
uint16_t modbus_pdu_get_com_event_log_response_status;
uint16_t modbus_pdu_get_com_event_log_response_event_count;
uint16_t modbus_pdu_get_com_event_log_response_message_count;
- plc4c_list modbus_pdu_get_com_event_log_response_events;
+ plc4c_list* modbus_pdu_get_com_event_log_response_events;
};
struct { /* ModbusPDUReportServerIdRequest */
};
struct { /* ModbusPDUReportServerIdResponse */
- plc4c_list modbus_pdu_report_server_id_response_value;
+ plc4c_list* modbus_pdu_report_server_id_response_value;
};
struct { /* ModbusPDUReadDeviceIdentificationRequest */
};
diff --git a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_file_record_response_item.h b/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_file_record_response_item.h
index 142f84b..b1d8fe9 100644
--- a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_file_record_response_item.h
+++ b/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_read_file_record_response_item.h
@@ -29,7 +29,7 @@ extern "C" {
struct plc4c_modbus_read_write_modbus_pdu_read_file_record_response_item {
/* Properties */
uint8_t reference_type;
- plc4c_list data;
+ plc4c_list* data;
};
typedef struct plc4c_modbus_read_write_modbus_pdu_read_file_record_response_item plc4c_modbus_read_write_modbus_pdu_read_file_record_response_item;
diff --git a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_write_file_record_request_item.h b/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_write_file_record_request_item.h
index b6d0f89..c5a33f9 100644
--- a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_write_file_record_request_item.h
+++ b/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_write_file_record_request_item.h
@@ -31,7 +31,7 @@ struct plc4c_modbus_read_write_modbus_pdu_write_file_record_request_item {
uint8_t reference_type;
uint16_t file_number;
uint16_t record_number;
- plc4c_list record_data;
+ plc4c_list* record_data;
};
typedef struct plc4c_modbus_read_write_modbus_pdu_write_file_record_request_item plc4c_modbus_read_write_modbus_pdu_write_file_record_request_item;
diff --git a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_write_file_record_response_item.h b/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_write_file_record_response_item.h
index 5a9316a..6f95ed3 100644
--- a/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_write_file_record_response_item.h
+++ b/sandbox/plc4c/generated-sources/modbus/includes/modbus_pdu_write_file_record_response_item.h
@@ -31,7 +31,7 @@ struct plc4c_modbus_read_write_modbus_pdu_write_file_record_response_item {
uint8_t reference_type;
uint16_t file_number;
uint16_t record_number;
- plc4c_list record_data;
+ plc4c_list* record_data;
};
typedef struct plc4c_modbus_read_write_modbus_pdu_write_file_record_response_item plc4c_modbus_read_write_modbus_pdu_write_file_record_response_item;
diff --git a/sandbox/plc4c/generated-sources/modbus/includes/modbus_serial_adu.h b/sandbox/plc4c/generated-sources/modbus/includes/modbus_serial_adu.h
index cf97b06..308c722 100644
--- a/sandbox/plc4c/generated-sources/modbus/includes/modbus_serial_adu.h
+++ b/sandbox/plc4c/generated-sources/modbus/includes/modbus_serial_adu.h
@@ -32,7 +32,7 @@ struct plc4c_modbus_read_write_modbus_serial_adu {
uint16_t transaction_id;
uint16_t length;
uint8_t address;
- plc4c_modbus_read_write_modbus_pdu pdu;
+ plc4c_modbus_read_write_modbus_pdu* pdu;
};
typedef struct plc4c_modbus_read_write_modbus_serial_adu plc4c_modbus_read_write_modbus_serial_adu;
diff --git a/sandbox/plc4c/generated-sources/modbus/includes/modbus_tcp_adu.h b/sandbox/plc4c/generated-sources/modbus/includes/modbus_tcp_adu.h
index 61418c1..aa3ae1f 100644
--- a/sandbox/plc4c/generated-sources/modbus/includes/modbus_tcp_adu.h
+++ b/sandbox/plc4c/generated-sources/modbus/includes/modbus_tcp_adu.h
@@ -35,7 +35,7 @@ struct plc4c_modbus_read_write_modbus_tcp_adu {
uint16_t transaction_identifier;
uint16_t protocol_identifier;
uint8_t unit_identifier;
- plc4c_modbus_read_write_modbus_pdu pdu;
+ plc4c_modbus_read_write_modbus_pdu* pdu;
};
typedef struct plc4c_modbus_read_write_modbus_tcp_adu plc4c_modbus_read_write_modbus_tcp_adu;
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu.c
index 3f185c9..662755e 100644
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu.c
+++ b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu.c
@@ -145,15 +145,17 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_parse(plc4c_spi_read_buffer
// Array field (value)
- plc4c_list value;
+ plc4c_list* value = malloc(sizeof(plc4c_list));
+ if(value == NULL) {
+ return NO_MEMORY;
+ }
{
// Count array
uint8_t itemCount = byteCount;
for(int curItem = 0; curItem < itemCount; curItem++) {
- int8_t value = plc4c_spi_read_byte(buf, 8);
- plc4c_utils_list_insert_head_value(&value, &value);
- plc4c_utils_list_insert_head_value(&value, &value);
+ int8_t _value = plc4c_spi_read_byte(buf, 8);
+ plc4c_utils_list_insert_head_value(value, &_value);
}
}
(*_message)->modbus_pdu_read_discrete_inputs_response_value = value;
@@ -176,15 +178,17 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_parse(plc4c_spi_read_buffer
// Array field (value)
- plc4c_list value;
+ plc4c_list* value = malloc(sizeof(plc4c_list));
+ if(value == NULL) {
+ return NO_MEMORY;
+ }
{
// Count array
uint8_t itemCount = byteCount;
for(int curItem = 0; curItem < itemCount; curItem++) {
- int8_t value = plc4c_spi_read_byte(buf, 8);
- plc4c_utils_list_insert_head_value(&value, &value);
- plc4c_utils_list_insert_head_value(&value, &value);
+ int8_t _value = plc4c_spi_read_byte(buf, 8);
+ plc4c_utils_list_insert_head_value(value, &_value);
}
}
(*_message)->modbus_pdu_read_coils_response_value = value;
@@ -228,15 +232,17 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_parse(plc4c_spi_read_buffer
// Array field (value)
- plc4c_list value;
+ plc4c_list* value = malloc(sizeof(plc4c_list));
+ if(value == NULL) {
+ return NO_MEMORY;
+ }
{
// Count array
uint8_t itemCount = byteCount;
for(int curItem = 0; curItem < itemCount; curItem++) {
- int8_t value = plc4c_spi_read_byte(buf, 8);
- plc4c_utils_list_insert_head_value(&value, &value);
- plc4c_utils_list_insert_head_value(&value, &value);
+ int8_t _value = plc4c_spi_read_byte(buf, 8);
+ plc4c_utils_list_insert_head_value(value, &_value);
}
}
(*_message)->modbus_pdu_write_multiple_coils_request_value = value;
@@ -270,15 +276,17 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_parse(plc4c_spi_read_buffer
// Array field (value)
- plc4c_list value;
+ plc4c_list* value = malloc(sizeof(plc4c_list));
+ if(value == NULL) {
+ return NO_MEMORY;
+ }
{
// Count array
uint8_t itemCount = byteCount;
for(int curItem = 0; curItem < itemCount; curItem++) {
- int8_t value = plc4c_spi_read_byte(buf, 8);
- plc4c_utils_list_insert_head_value(&value, &value);
- plc4c_utils_list_insert_head_value(&value, &value);
+ int8_t _value = plc4c_spi_read_byte(buf, 8);
+ plc4c_utils_list_insert_head_value(value, &_value);
}
}
(*_message)->modbus_pdu_read_input_registers_response_value = value;
@@ -301,15 +309,17 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_parse(plc4c_spi_read_buffer
// Array field (value)
- plc4c_list value;
+ plc4c_list* value = malloc(sizeof(plc4c_list));
+ if(value == NULL) {
+ return NO_MEMORY;
+ }
{
// Count array
uint8_t itemCount = byteCount;
for(int curItem = 0; curItem < itemCount; curItem++) {
- int8_t value = plc4c_spi_read_byte(buf, 8);
- plc4c_utils_list_insert_head_value(&value, &value);
- plc4c_utils_list_insert_head_value(&value, &value);
+ int8_t _value = plc4c_spi_read_byte(buf, 8);
+ plc4c_utils_list_insert_head_value(value, &_value);
}
}
(*_message)->modbus_pdu_read_holding_registers_response_value = value;
@@ -353,15 +363,17 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_parse(plc4c_spi_read_buffer
// Array field (value)
- plc4c_list value;
+ plc4c_list* value = malloc(sizeof(plc4c_list));
+ if(value == NULL) {
+ return NO_MEMORY;
+ }
{
// Count array
uint8_t itemCount = byteCount;
for(int curItem = 0; curItem < itemCount; curItem++) {
- int8_t value = plc4c_spi_read_byte(buf, 8);
- plc4c_utils_list_insert_head_value(&value, &value);
- plc4c_utils_list_insert_head_value(&value, &value);
+ int8_t _value = plc4c_spi_read_byte(buf, 8);
+ plc4c_utils_list_insert_head_value(value, &_value);
}
}
(*_message)->modbus_pdu_write_multiple_holding_registers_request_value = value;
@@ -404,15 +416,17 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_parse(plc4c_spi_read_buffer
// Array field (value)
- plc4c_list value;
+ plc4c_list* value = malloc(sizeof(plc4c_list));
+ if(value == NULL) {
+ return NO_MEMORY;
+ }
{
// Count array
uint8_t itemCount = byteCount;
for(int curItem = 0; curItem < itemCount; curItem++) {
- int8_t value = plc4c_spi_read_byte(buf, 8);
- plc4c_utils_list_insert_head_value(&value, &value);
- plc4c_utils_list_insert_head_value(&value, &value);
+ int8_t _value = plc4c_spi_read_byte(buf, 8);
+ plc4c_utils_list_insert_head_value(value, &_value);
}
}
(*_message)->modbus_pdu_read_write_multiple_holding_registers_request_value = value;
@@ -424,15 +438,17 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_parse(plc4c_spi_read_buffer
// Array field (value)
- plc4c_list value;
+ plc4c_list* value = malloc(sizeof(plc4c_list));
+ if(value == NULL) {
+ return NO_MEMORY;
+ }
{
// Count array
uint8_t itemCount = byteCount;
for(int curItem = 0; curItem < itemCount; curItem++) {
- int8_t value = plc4c_spi_read_byte(buf, 8);
- plc4c_utils_list_insert_head_value(&value, &value);
- plc4c_utils_list_insert_head_value(&value, &value);
+ int8_t _value = plc4c_spi_read_byte(buf, 8);
+ plc4c_utils_list_insert_head_value(value, &_value);
}
}
(*_message)->modbus_pdu_read_write_multiple_holding_registers_response_value = value;
@@ -486,15 +502,17 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_parse(plc4c_spi_read_buffer
// Array field (fifoValue)
- plc4c_list fifoValue;
+ plc4c_list* fifoValue = malloc(sizeof(plc4c_list));
+ if(fifoValue == NULL) {
+ return NO_MEMORY;
+ }
{
// Count array
uint8_t itemCount = fifoCount;
for(int curItem = 0; curItem < itemCount; curItem++) {
- uint16_t value = plc4c_spi_read_unsigned_int(buf, 16);
- plc4c_utils_list_insert_head_value(&fifoValue, &value);
- plc4c_utils_list_insert_head_value(&fifoValue, &value);
+ uint16_t _value = plc4c_spi_read_unsigned_int(buf, 16);
+ plc4c_utils_list_insert_head_value(fifoValue, &_value);
}
}
(*_message)->modbus_pdu_read_fifo_queue_response_fifo_value = fifoValue;
@@ -506,15 +524,18 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_parse(plc4c_spi_read_buffer
// Array field (items)
- plc4c_list items;
+ plc4c_list* items = malloc(sizeof(plc4c_list));
+ if(items == NULL) {
+ return NO_MEMORY;
+ }
{
// Length array
uint8_t _itemsLength = byteCount;
uint8_t itemsEndPos = plc4c_spi_read_get_pos(buf) + _itemsLength;
while(plc4c_spi_read_get_pos(buf) < itemsEndPos) {
- plc4c_list* value = NULL;
- plc4c_modbus_read_write_modbus_pdu_read_file_record_request_item_parse(buf, (void*) &value);
- plc4c_utils_list_insert_head_value(&items, value);
+ plc4c_list* _value = NULL;
+ plc4c_modbus_read_write_modbus_pdu_read_file_record_request_item_parse(buf, (void*) &_value);
+ plc4c_utils_list_insert_head_value(items, _value);
}
}
(*_message)->modbus_pdu_read_file_record_request_items = items;
@@ -526,15 +547,18 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_parse(plc4c_spi_read_buffer
// Array field (items)
- plc4c_list items;
+ plc4c_list* items = malloc(sizeof(plc4c_list));
+ if(items == NULL) {
+ return NO_MEMORY;
+ }
{
// Length array
uint8_t _itemsLength = byteCount;
uint8_t itemsEndPos = plc4c_spi_read_get_pos(buf) + _itemsLength;
while(plc4c_spi_read_get_pos(buf) < itemsEndPos) {
- plc4c_list* value = NULL;
- plc4c_modbus_read_write_modbus_pdu_read_file_record_response_item_parse(buf, (void*) &value);
- plc4c_utils_list_insert_head_value(&items, value);
+ plc4c_list* _value = NULL;
+ plc4c_modbus_read_write_modbus_pdu_read_file_record_response_item_parse(buf, (void*) &_value);
+ plc4c_utils_list_insert_head_value(items, _value);
}
}
(*_message)->modbus_pdu_read_file_record_response_items = items;
@@ -546,15 +570,18 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_parse(plc4c_spi_read_buffer
// Array field (items)
- plc4c_list items;
+ plc4c_list* items = malloc(sizeof(plc4c_list));
+ if(items == NULL) {
+ return NO_MEMORY;
+ }
{
// Length array
uint8_t _itemsLength = byteCount;
uint8_t itemsEndPos = plc4c_spi_read_get_pos(buf) + _itemsLength;
while(plc4c_spi_read_get_pos(buf) < itemsEndPos) {
- plc4c_list* value = NULL;
- plc4c_modbus_read_write_modbus_pdu_write_file_record_request_item_parse(buf, (void*) &value);
- plc4c_utils_list_insert_head_value(&items, value);
+ plc4c_list* _value = NULL;
+ plc4c_modbus_read_write_modbus_pdu_write_file_record_request_item_parse(buf, (void*) &_value);
+ plc4c_utils_list_insert_head_value(items, _value);
}
}
(*_message)->modbus_pdu_write_file_record_request_items = items;
@@ -566,15 +593,18 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_parse(plc4c_spi_read_buffer
// Array field (items)
- plc4c_list items;
+ plc4c_list* items = malloc(sizeof(plc4c_list));
+ if(items == NULL) {
+ return NO_MEMORY;
+ }
{
// Length array
uint8_t _itemsLength = byteCount;
uint8_t itemsEndPos = plc4c_spi_read_get_pos(buf) + _itemsLength;
while(plc4c_spi_read_get_pos(buf) < itemsEndPos) {
- plc4c_list* value = NULL;
- plc4c_modbus_read_write_modbus_pdu_write_file_record_response_item_parse(buf, (void*) &value);
- plc4c_utils_list_insert_head_value(&items, value);
+ plc4c_list* _value = NULL;
+ plc4c_modbus_read_write_modbus_pdu_write_file_record_response_item_parse(buf, (void*) &_value);
+ plc4c_utils_list_insert_head_value(items, _value);
}
}
(*_message)->modbus_pdu_write_file_record_response_items = items;
@@ -622,15 +652,17 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_parse(plc4c_spi_read_buffer
// Array field (events)
- plc4c_list events;
+ plc4c_list* events = malloc(sizeof(plc4c_list));
+ if(events == NULL) {
+ return NO_MEMORY;
+ }
{
// Count array
uint8_t itemCount = (byteCount) - (6);
for(int curItem = 0; curItem < itemCount; curItem++) {
- int8_t value = plc4c_spi_read_byte(buf, 8);
- plc4c_utils_list_insert_head_value(&events, &value);
- plc4c_utils_list_insert_head_value(&events, &value);
+ int8_t _value = plc4c_spi_read_byte(buf, 8);
+ plc4c_utils_list_insert_head_value(events, &_value);
}
}
(*_message)->modbus_pdu_get_com_event_log_response_events = events;
@@ -644,15 +676,17 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_parse(plc4c_spi_read_buffer
// Array field (value)
- plc4c_list value;
+ plc4c_list* value = malloc(sizeof(plc4c_list));
+ if(value == NULL) {
+ return NO_MEMORY;
+ }
{
// Count array
uint8_t itemCount = byteCount;
for(int curItem = 0; curItem < itemCount; curItem++) {
- int8_t value = plc4c_spi_read_byte(buf, 8);
- plc4c_utils_list_insert_head_value(&value, &value);
- plc4c_utils_list_insert_head_value(&value, &value);
+ int8_t _value = plc4c_spi_read_byte(buf, 8);
+ plc4c_utils_list_insert_head_value(value, &_value);
}
}
(*_message)->modbus_pdu_report_server_id_response_value = value;
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_file_record_response_item.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_file_record_response_item.c
index 6b582e0..11737e4 100644
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_file_record_response_item.c
+++ b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_read_file_record_response_item.c
@@ -40,14 +40,17 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_read_file_record_response_i
(*_message)->reference_type = referenceType;
// Array field (data)
- plc4c_list data;
+ plc4c_list* data = malloc(sizeof(plc4c_list));
+ if(data == NULL) {
+ return NO_MEMORY;
+ }
{
// Length array
uint8_t _dataLength = (dataLength) - (1);
uint8_t dataEndPos = plc4c_spi_read_get_pos(buf) + _dataLength;
while(plc4c_spi_read_get_pos(buf) < dataEndPos) {
- uint16_t value = plc4c_spi_read_unsigned_int(buf, 16);
- plc4c_utils_list_insert_head_value(&data, &value);
+ uint16_t _value = plc4c_spi_read_unsigned_int(buf, 16);
+ plc4c_utils_list_insert_head_value(data, &_value);
}
}
(*_message)->data = data;
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_write_file_record_request_item.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_write_file_record_request_item.c
index d1ef483..aded3ab 100644
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_write_file_record_request_item.c
+++ b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_write_file_record_request_item.c
@@ -48,14 +48,17 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_write_file_record_request_i
uint16_t recordLength = plc4c_spi_read_unsigned_int(buf, 16);
// Array field (recordData)
- plc4c_list recordData;
+ plc4c_list* recordData = malloc(sizeof(plc4c_list));
+ if(recordData == NULL) {
+ return NO_MEMORY;
+ }
{
// Length array
uint8_t _recordDataLength = (recordLength) * (2);
uint8_t recordDataEndPos = plc4c_spi_read_get_pos(buf) + _recordDataLength;
while(plc4c_spi_read_get_pos(buf) < recordDataEndPos) {
- uint16_t value = plc4c_spi_read_unsigned_int(buf, 16);
- plc4c_utils_list_insert_head_value(&recordData, &value);
+ uint16_t _value = plc4c_spi_read_unsigned_int(buf, 16);
+ plc4c_utils_list_insert_head_value(recordData, &_value);
}
}
(*_message)->record_data = recordData;
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_write_file_record_response_item.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_write_file_record_response_item.c
index bbcfc0a..d3f9ace 100644
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_write_file_record_response_item.c
+++ b/sandbox/plc4c/generated-sources/modbus/src/modbus_pdu_write_file_record_response_item.c
@@ -48,14 +48,17 @@ plc4c_return_code plc4c_modbus_read_write_modbus_pdu_write_file_record_response_
uint16_t recordLength = plc4c_spi_read_unsigned_int(buf, 16);
// Array field (recordData)
- plc4c_list recordData;
+ plc4c_list* recordData = malloc(sizeof(plc4c_list));
+ if(recordData == NULL) {
+ return NO_MEMORY;
+ }
{
// Length array
uint8_t _recordDataLength = (recordLength) * (2);
uint8_t recordDataEndPos = plc4c_spi_read_get_pos(buf) + _recordDataLength;
while(plc4c_spi_read_get_pos(buf) < recordDataEndPos) {
- uint16_t value = plc4c_spi_read_unsigned_int(buf, 16);
- plc4c_utils_list_insert_head_value(&recordData, &value);
+ uint16_t _value = plc4c_spi_read_unsigned_int(buf, 16);
+ plc4c_utils_list_insert_head_value(recordData, &_value);
}
}
(*_message)->record_data = recordData;
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_serial_adu.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_serial_adu.c
index 37bc4cb..7bffd64 100644
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_serial_adu.c
+++ b/sandbox/plc4c/generated-sources/modbus/src/modbus_serial_adu.c
@@ -53,7 +53,7 @@ plc4c_return_code plc4c_modbus_read_write_modbus_serial_adu_parse(plc4c_spi_read
(*_message)->address = address;
// Simple Field (pdu)
- plc4c_modbus_read_write_modbus_pdu pdu;
+ plc4c_modbus_read_write_modbus_pdu* pdu;
plc4c_modbus_read_write_modbus_pdu_parse(buf, response, (void*) &pdu);
(*_message)->pdu = pdu;
diff --git a/sandbox/plc4c/generated-sources/modbus/src/modbus_tcp_adu.c b/sandbox/plc4c/generated-sources/modbus/src/modbus_tcp_adu.c
index 5756ede..2170a37 100644
--- a/sandbox/plc4c/generated-sources/modbus/src/modbus_tcp_adu.c
+++ b/sandbox/plc4c/generated-sources/modbus/src/modbus_tcp_adu.c
@@ -51,7 +51,7 @@ plc4c_return_code plc4c_modbus_read_write_modbus_tcp_adu_parse(plc4c_spi_read_bu
(*_message)->unit_identifier = unitIdentifier;
// Simple Field (pdu)
- plc4c_modbus_read_write_modbus_pdu pdu;
+ plc4c_modbus_read_write_modbus_pdu* pdu;
plc4c_modbus_read_write_modbus_pdu_parse(buf, response, (void*) &pdu);
(*_message)->pdu = pdu;
diff --git a/sandbox/plc4c/generated-sources/s7/includes/cotp_packet.h b/sandbox/plc4c/generated-sources/s7/includes/cotp_packet.h
index 91d4457..c1c1ca0 100644
--- a/sandbox/plc4c/generated-sources/s7/includes/cotp_packet.h
+++ b/sandbox/plc4c/generated-sources/s7/includes/cotp_packet.h
@@ -82,7 +82,7 @@ struct plc4c_s7_read_write_cotp_packet {
uint8_t cotp_packet_tpdu_error_reject_cause;
};
};
- plc4c_list parameters;
+ plc4c_list* parameters;
plc4c_s7_read_write_s7_message* payload;
};
typedef struct plc4c_s7_read_write_cotp_packet plc4c_s7_read_write_cotp_packet;
diff --git a/sandbox/plc4c/generated-sources/s7/includes/cotp_parameter.h b/sandbox/plc4c/generated-sources/s7/includes/cotp_parameter.h
index 62eb8ed..11c9b00 100644
--- a/sandbox/plc4c/generated-sources/s7/includes/cotp_parameter.h
+++ b/sandbox/plc4c/generated-sources/s7/includes/cotp_parameter.h
@@ -64,7 +64,7 @@ struct plc4c_s7_read_write_cotp_parameter {
uint8_t cotp_parameter_checksum_crc;
};
struct { /* COTPParameterDisconnectAdditionalInformation */
- plc4c_list cotp_parameter_disconnect_additional_information_data;
+ plc4c_list* cotp_parameter_disconnect_additional_information_data;
};
};
};
diff --git a/sandbox/plc4c/generated-sources/s7/includes/s7_parameter.h b/sandbox/plc4c/generated-sources/s7/includes/s7_parameter.h
index 1e126c7..f3172a4 100644
--- a/sandbox/plc4c/generated-sources/s7/includes/s7_parameter.h
+++ b/sandbox/plc4c/generated-sources/s7/includes/s7_parameter.h
@@ -60,19 +60,19 @@ struct plc4c_s7_read_write_s7_parameter {
uint16_t s7_parameter_setup_communication_pdu_length;
};
struct { /* S7ParameterReadVarRequest */
- plc4c_list s7_parameter_read_var_request_items;
+ plc4c_list* s7_parameter_read_var_request_items;
};
struct { /* S7ParameterReadVarResponse */
uint8_t s7_parameter_read_var_response_num_items;
};
struct { /* S7ParameterWriteVarRequest */
- plc4c_list s7_parameter_write_var_request_items;
+ plc4c_list* s7_parameter_write_var_request_items;
};
struct { /* S7ParameterWriteVarResponse */
uint8_t s7_parameter_write_var_response_num_items;
};
struct { /* S7ParameterUserData */
- plc4c_list s7_parameter_user_data_items;
+ plc4c_list* s7_parameter_user_data_items;
};
};
};
diff --git a/sandbox/plc4c/generated-sources/s7/includes/s7_payload.h b/sandbox/plc4c/generated-sources/s7/includes/s7_payload.h
index 4e893d3..1aa5564 100644
--- a/sandbox/plc4c/generated-sources/s7/includes/s7_payload.h
+++ b/sandbox/plc4c/generated-sources/s7/includes/s7_payload.h
@@ -55,16 +55,16 @@ struct plc4c_s7_read_write_s7_payload {
/* Properties */
union {
struct { /* S7PayloadReadVarResponse */
- plc4c_list s7_payload_read_var_response_items;
+ plc4c_list* s7_payload_read_var_response_items;
};
struct { /* S7PayloadWriteVarRequest */
- plc4c_list s7_payload_write_var_request_items;
+ plc4c_list* s7_payload_write_var_request_items;
};
struct { /* S7PayloadWriteVarResponse */
- plc4c_list s7_payload_write_var_response_items;
+ plc4c_list* s7_payload_write_var_response_items;
};
struct { /* S7PayloadUserData */
- plc4c_list s7_payload_user_data_items;
+ plc4c_list* s7_payload_user_data_items;
};
};
};
diff --git a/sandbox/plc4c/generated-sources/s7/includes/s7_payload_user_data_item.h b/sandbox/plc4c/generated-sources/s7/includes/s7_payload_user_data_item.h
index a3c427c..aa7e30e 100644
--- a/sandbox/plc4c/generated-sources/s7/includes/s7_payload_user_data_item.h
+++ b/sandbox/plc4c/generated-sources/s7/includes/s7_payload_user_data_item.h
@@ -55,13 +55,13 @@ struct plc4c_s7_read_write_s7_payload_user_data_item {
/* Properties */
plc4c_s7_read_write_data_transport_error_code return_code;
plc4c_s7_read_write_data_transport_size transport_size;
- plc4c_s7_read_write_szl_id szl_id;
+ plc4c_s7_read_write_szl_id* szl_id;
uint16_t szl_index;
union {
struct { /* S7PayloadUserDataItemCpuFunctionReadSzlRequest */
};
struct { /* S7PayloadUserDataItemCpuFunctionReadSzlResponse */
- plc4c_list s7_payload_user_data_item_cpu_function_read_szl_response_items;
+ plc4c_list* s7_payload_user_data_item_cpu_function_read_szl_response_items;
};
};
};
diff --git a/sandbox/plc4c/generated-sources/s7/includes/s7_var_payload_data_item.h b/sandbox/plc4c/generated-sources/s7/includes/s7_var_payload_data_item.h
index 6783105..e24bb56 100644
--- a/sandbox/plc4c/generated-sources/s7/includes/s7_var_payload_data_item.h
+++ b/sandbox/plc4c/generated-sources/s7/includes/s7_var_payload_data_item.h
@@ -33,7 +33,7 @@ struct plc4c_s7_read_write_s7_var_payload_data_item {
plc4c_s7_read_write_data_transport_error_code return_code;
plc4c_s7_read_write_data_transport_size transport_size;
uint16_t data_length;
- plc4c_list data;
+ plc4c_list* data;
};
typedef struct plc4c_s7_read_write_s7_var_payload_data_item plc4c_s7_read_write_s7_var_payload_data_item;
diff --git a/sandbox/plc4c/generated-sources/s7/includes/s7_var_request_parameter_item.h b/sandbox/plc4c/generated-sources/s7/includes/s7_var_request_parameter_item.h
index 0c83ffa..eb442d3 100644
--- a/sandbox/plc4c/generated-sources/s7/includes/s7_var_request_parameter_item.h
+++ b/sandbox/plc4c/generated-sources/s7/includes/s7_var_request_parameter_item.h
@@ -48,7 +48,7 @@ struct plc4c_s7_read_write_s7_var_request_parameter_item {
/* Properties */
union {
struct { /* S7VarRequestParameterItemAddress */
- plc4c_s7_read_write_s7_address s7_var_request_parameter_item_address_address;
+ plc4c_s7_read_write_s7_address* s7_var_request_parameter_item_address_address;
};
};
};
diff --git a/sandbox/plc4c/generated-sources/s7/includes/szl_data_tree_item.h b/sandbox/plc4c/generated-sources/s7/includes/szl_data_tree_item.h
index 65a0922..920af6f 100644
--- a/sandbox/plc4c/generated-sources/s7/includes/szl_data_tree_item.h
+++ b/sandbox/plc4c/generated-sources/s7/includes/szl_data_tree_item.h
@@ -29,7 +29,7 @@ extern "C" {
struct plc4c_s7_read_write_szl_data_tree_item {
/* Properties */
uint16_t item_index;
- int8_t mlfb[20];
+ int8_t* mlfb;
uint16_t module_type_id;
uint16_t ausbg;
uint16_t ausbe;
diff --git a/sandbox/plc4c/generated-sources/s7/includes/tpkt_packet.h b/sandbox/plc4c/generated-sources/s7/includes/tpkt_packet.h
index 0976125..1774b50 100644
--- a/sandbox/plc4c/generated-sources/s7/includes/tpkt_packet.h
+++ b/sandbox/plc4c/generated-sources/s7/includes/tpkt_packet.h
@@ -33,7 +33,7 @@ const uint8_t S7_READ_WRITE_TPKT_PACKET_PROTOCOL_ID = 0x03;
struct plc4c_s7_read_write_tpkt_packet {
/* Properties */
uint8_t protocol_id;
- plc4c_s7_read_write_cotp_packet payload;
+ plc4c_s7_read_write_cotp_packet* payload;
};
typedef struct plc4c_s7_read_write_tpkt_packet plc4c_s7_read_write_tpkt_packet;
diff --git a/sandbox/plc4c/generated-sources/s7/src/cotp_packet.c b/sandbox/plc4c/generated-sources/s7/src/cotp_packet.c
index 189d302..04dad6a 100644
--- a/sandbox/plc4c/generated-sources/s7/src/cotp_packet.c
+++ b/sandbox/plc4c/generated-sources/s7/src/cotp_packet.c
@@ -146,15 +146,18 @@ plc4c_return_code plc4c_s7_read_write_cotp_packet_parse(plc4c_spi_read_buffer* b
// Array field (parameters)
curPos = plc4c_spi_read_get_pos(buf) - startPos;
- plc4c_list parameters;
+ plc4c_list* parameters = malloc(sizeof(plc4c_list));
+ if(parameters == NULL) {
+ return NO_MEMORY;
+ }
{
// Length array
uint8_t _parametersLength = (((headerLength) + (1))) - (curPos);
uint8_t parametersEndPos = plc4c_spi_read_get_pos(buf) + _parametersLength;
while(plc4c_spi_read_get_pos(buf) < parametersEndPos) {
- plc4c_list* value = NULL;
- plc4c_s7_read_write_cotp_parameter_parse(buf, (((headerLength) + (1))) - (curPos), (void*) &value);
- plc4c_utils_list_insert_head_value(¶meters, value);
+ plc4c_list* _value = NULL;
+ plc4c_s7_read_write_cotp_parameter_parse(buf, (((headerLength) + (1))) - (curPos), (void*) &_value);
+ plc4c_utils_list_insert_head_value(parameters, _value);
curPos = plc4c_spi_read_get_pos(buf) - startPos;
}
}
diff --git a/sandbox/plc4c/generated-sources/s7/src/cotp_parameter.c b/sandbox/plc4c/generated-sources/s7/src/cotp_parameter.c
index dfef1a8..5a2c63d 100644
--- a/sandbox/plc4c/generated-sources/s7/src/cotp_parameter.c
+++ b/sandbox/plc4c/generated-sources/s7/src/cotp_parameter.c
@@ -86,15 +86,17 @@ plc4c_return_code plc4c_s7_read_write_cotp_parameter_parse(plc4c_spi_read_buffer
if(parameterType == 0xE0) { /* COTPParameterDisconnectAdditionalInformation */
// Array field (data)
- plc4c_list data;
+ plc4c_list* data = malloc(sizeof(plc4c_list));
+ if(data == NULL) {
+ return NO_MEMORY;
+ }
{
// Count array
uint8_t itemCount = rest;
for(int curItem = 0; curItem < itemCount; curItem++) {
- uint8_t value = plc4c_spi_read_unsigned_short(buf, 8);
- plc4c_utils_list_insert_head_value(&data, &value);
- plc4c_utils_list_insert_head_value(&data, &value);
+ uint8_t _value = plc4c_spi_read_unsigned_short(buf, 8);
+ plc4c_utils_list_insert_head_value(data, &_value);
}
}
(*_message)->cotp_parameter_disconnect_additional_information_data = data;
diff --git a/sandbox/plc4c/generated-sources/s7/src/s7_parameter.c b/sandbox/plc4c/generated-sources/s7/src/s7_parameter.c
index 6225708..182f2eb 100644
--- a/sandbox/plc4c/generated-sources/s7/src/s7_parameter.c
+++ b/sandbox/plc4c/generated-sources/s7/src/s7_parameter.c
@@ -90,16 +90,18 @@ plc4c_return_code plc4c_s7_read_write_s7_parameter_parse(plc4c_spi_read_buffer*
// Array field (items)
- plc4c_list items;
+ plc4c_list* items = malloc(sizeof(plc4c_list));
+ if(items == NULL) {
+ return NO_MEMORY;
+ }
{
// Count array
uint8_t itemCount = numItems;
for(int curItem = 0; curItem < itemCount; curItem++) {
bool lastItem = curItem == (itemCount - 1);
- plc4c_list* value = NULL;
- plc4c_s7_read_write_s7_var_request_parameter_item_parse(buf, (void*) &value);
- plc4c_utils_list_insert_head_value(&items, value);
- plc4c_utils_list_insert_head_value(&items, &value);
+ plc4c_list* _value = NULL;
+ plc4c_s7_read_write_s7_var_request_parameter_item_parse(buf, (void*) &_value);
+ plc4c_utils_list_insert_head_value(items, _value);
}
}
(*_message)->s7_parameter_read_var_request_items = items;
@@ -117,16 +119,18 @@ plc4c_return_code plc4c_s7_read_write_s7_parameter_parse(plc4c_spi_read_buffer*
// Array field (items)
- plc4c_list items;
+ plc4c_list* items = malloc(sizeof(plc4c_list));
+ if(items == NULL) {
+ return NO_MEMORY;
+ }
{
// Count array
uint8_t itemCount = numItems;
for(int curItem = 0; curItem < itemCount; curItem++) {
bool lastItem = curItem == (itemCount - 1);
- plc4c_list* value = NULL;
- plc4c_s7_read_write_s7_var_request_parameter_item_parse(buf, (void*) &value);
- plc4c_utils_list_insert_head_value(&items, value);
- plc4c_utils_list_insert_head_value(&items, &value);
+ plc4c_list* _value = NULL;
+ plc4c_s7_read_write_s7_var_request_parameter_item_parse(buf, (void*) &_value);
+ plc4c_utils_list_insert_head_value(items, _value);
}
}
(*_message)->s7_parameter_write_var_request_items = items;
@@ -144,16 +148,18 @@ plc4c_return_code plc4c_s7_read_write_s7_parameter_parse(plc4c_spi_read_buffer*
// Array field (items)
- plc4c_list items;
+ plc4c_list* items = malloc(sizeof(plc4c_list));
+ if(items == NULL) {
+ return NO_MEMORY;
+ }
{
// Count array
uint8_t itemCount = numItems;
for(int curItem = 0; curItem < itemCount; curItem++) {
bool lastItem = curItem == (itemCount - 1);
- plc4c_list* value = NULL;
- plc4c_s7_read_write_s7_parameter_user_data_item_parse(buf, (void*) &value);
- plc4c_utils_list_insert_head_value(&items, value);
- plc4c_utils_list_insert_head_value(&items, &value);
+ plc4c_list* _value = NULL;
+ plc4c_s7_read_write_s7_parameter_user_data_item_parse(buf, (void*) &_value);
+ plc4c_utils_list_insert_head_value(items, _value);
}
}
(*_message)->s7_parameter_user_data_items = items;
diff --git a/sandbox/plc4c/generated-sources/s7/src/s7_payload.c b/sandbox/plc4c/generated-sources/s7/src/s7_payload.c
index 252097a..815f1d5 100644
--- a/sandbox/plc4c/generated-sources/s7/src/s7_payload.c
+++ b/sandbox/plc4c/generated-sources/s7/src/s7_payload.c
@@ -54,16 +54,18 @@ plc4c_return_code plc4c_s7_read_write_s7_payload_parse(plc4c_spi_read_buffer* bu
if((plc4c_s7_read_write_s7_parameter_get_discriminator(parameter->_type).parameterType == 0x04) && (messageType == 0x03)) { /* S7PayloadReadVarResponse */
// Array field (items)
- plc4c_list items;
+ plc4c_list* items = malloc(sizeof(plc4c_list));
+ if(items == NULL) {
+ return NO_MEMORY;
+ }
{
// Count array
- uint8_t itemCount = ((plc4c_s7_read_write_s7_parameter) (*parameter)).s7_parameter_read_var_response_num_items;
+ uint8_t itemCount = ((plc4c_s7_read_write_s7_parameter*) (parameter))->s7_parameter_read_var_response_num_items;
for(int curItem = 0; curItem < itemCount; curItem++) {
bool lastItem = curItem == (itemCount - 1);
- plc4c_list* value = NULL;
- plc4c_s7_read_write_s7_var_payload_data_item_parse(buf, lastItem, (void*) &value);
- plc4c_utils_list_insert_head_value(&items, value);
- plc4c_utils_list_insert_head_value(&items, &value);
+ plc4c_list* _value = NULL;
+ plc4c_s7_read_write_s7_var_payload_data_item_parse(buf, lastItem, (void*) &_value);
+ plc4c_utils_list_insert_head_value(items, _value);
}
}
(*_message)->s7_payload_read_var_response_items = items;
@@ -71,16 +73,18 @@ plc4c_return_code plc4c_s7_read_write_s7_payload_parse(plc4c_spi_read_buffer* bu
if((plc4c_s7_read_write_s7_parameter_get_discriminator(parameter->_type).parameterType == 0x05) && (messageType == 0x01)) { /* S7PayloadWriteVarRequest */
// Array field (items)
- plc4c_list items;
+ plc4c_list* items = malloc(sizeof(plc4c_list));
+ if(items == NULL) {
+ return NO_MEMORY;
+ }
{
// Count array
- uint8_t itemCount = plc4c_spi_evaluation_helper_count(((plc4c_s7_read_write_s7_parameter) (*parameter)).s7_parameter_write_var_request_items);
+ uint8_t itemCount = plc4c_spi_evaluation_helper_count(((plc4c_s7_read_write_s7_parameter*) (parameter))->s7_parameter_write_var_request_items);
for(int curItem = 0; curItem < itemCount; curItem++) {
bool lastItem = curItem == (itemCount - 1);
- plc4c_list* value = NULL;
- plc4c_s7_read_write_s7_var_payload_data_item_parse(buf, lastItem, (void*) &value);
- plc4c_utils_list_insert_head_value(&items, value);
- plc4c_utils_list_insert_head_value(&items, &value);
+ plc4c_list* _value = NULL;
+ plc4c_s7_read_write_s7_var_payload_data_item_parse(buf, lastItem, (void*) &_value);
+ plc4c_utils_list_insert_head_value(items, _value);
}
}
(*_message)->s7_payload_write_var_request_items = items;
@@ -88,16 +92,18 @@ plc4c_return_code plc4c_s7_read_write_s7_payload_parse(plc4c_spi_read_buffer* bu
if((plc4c_s7_read_write_s7_parameter_get_discriminator(parameter->_type).parameterType == 0x05) && (messageType == 0x03)) { /* S7PayloadWriteVarResponse */
// Array field (items)
- plc4c_list items;
+ plc4c_list* items = malloc(sizeof(plc4c_list));
+ if(items == NULL) {
+ return NO_MEMORY;
+ }
{
// Count array
- uint8_t itemCount = ((plc4c_s7_read_write_s7_parameter) (*parameter)).s7_parameter_write_var_response_num_items;
+ uint8_t itemCount = ((plc4c_s7_read_write_s7_parameter*) (parameter))->s7_parameter_write_var_response_num_items;
for(int curItem = 0; curItem < itemCount; curItem++) {
bool lastItem = curItem == (itemCount - 1);
- plc4c_list* value = NULL;
- plc4c_s7_read_write_s7_var_payload_status_item_parse(buf, (void*) &value);
- plc4c_utils_list_insert_head_value(&items, value);
- plc4c_utils_list_insert_head_value(&items, &value);
+ plc4c_list* _value = NULL;
+ plc4c_s7_read_write_s7_var_payload_status_item_parse(buf, (void*) &_value);
+ plc4c_utils_list_insert_head_value(items, _value);
}
}
(*_message)->s7_payload_write_var_response_items = items;
@@ -105,16 +111,18 @@ plc4c_return_code plc4c_s7_read_write_s7_payload_parse(plc4c_spi_read_buffer* bu
if((plc4c_s7_read_write_s7_parameter_get_discriminator(parameter->_type).parameterType == 0x00) && (messageType == 0x07)) { /* S7PayloadUserData */
// Array field (items)
- plc4c_list items;
+ plc4c_list* items = malloc(sizeof(plc4c_list));
+ if(items == NULL) {
+ return NO_MEMORY;
+ }
{
// Count array
- uint8_t itemCount = plc4c_spi_evaluation_helper_count(((plc4c_s7_read_write_s7_parameter) (*parameter)).s7_parameter_user_data_items);
+ uint8_t itemCount = plc4c_spi_evaluation_helper_count(((plc4c_s7_read_write_s7_parameter*) (parameter))->s7_parameter_user_data_items);
for(int curItem = 0; curItem < itemCount; curItem++) {
bool lastItem = curItem == (itemCount - 1);
- plc4c_list* value = NULL;
- plc4c_s7_read_write_s7_payload_user_data_item_parse(buf, ((plc4c_s7_read_write_s7_parameter_user_data_item) (((plc4c_s7_read_write_s7_parameter) (*parameter)).s7_parameter_user_data_items[0])).s7_parameter_user_data_item_cpu_functions_cpu_function_type, (void*) &value);
- plc4c_utils_list_insert_head_value(&items, value);
- plc4c_utils_list_insert_head_value(&items, &value);
+ plc4c_list* _value = NULL;
+ plc4c_s7_read_write_s7_payload_user_data_item_parse(buf, ((plc4c_s7_read_write_s7_parameter_user_data_item*) (plc4c_utils_list_get(((plc4c_s7_read_write_s7_parameter*) (parameter))->s7_parameter_user_data_items, 0)))->s7_parameter_user_data_item_cpu_functions_cpu_function_type, (void*) &_value);
+ plc4c_utils_list_insert_head_value(items, _value);
}
}
(*_message)->s7_payload_user_data_items = items;
diff --git a/sandbox/plc4c/generated-sources/s7/src/s7_payload_user_data_item.c b/sandbox/plc4c/generated-sources/s7/src/s7_payload_user_data_item.c
index da87ddf..4da4a54 100644
--- a/sandbox/plc4c/generated-sources/s7/src/s7_payload_user_data_item.c
+++ b/sandbox/plc4c/generated-sources/s7/src/s7_payload_user_data_item.c
@@ -59,7 +59,7 @@ plc4c_return_code plc4c_s7_read_write_s7_payload_user_data_item_parse(plc4c_spi_
uint16_t dataLength = plc4c_spi_read_unsigned_int(buf, 16);
// Simple Field (szlId)
- plc4c_s7_read_write_szl_id szlId;
+ plc4c_s7_read_write_szl_id* szlId;
plc4c_s7_read_write_szl_id_parse(buf, (void*) &szlId);
(*_message)->szl_id = szlId;
@@ -85,16 +85,18 @@ plc4c_return_code plc4c_s7_read_write_s7_payload_user_data_item_parse(plc4c_spi_
// Array field (items)
- plc4c_list items;
+ plc4c_list* items = malloc(sizeof(plc4c_list));
+ if(items == NULL) {
+ return NO_MEMORY;
+ }
{
// Count array
uint8_t itemCount = szlItemCount;
for(int curItem = 0; curItem < itemCount; curItem++) {
bool lastItem = curItem == (itemCount - 1);
- plc4c_list* value = NULL;
- plc4c_s7_read_write_szl_data_tree_item_parse(buf, (void*) &value);
- plc4c_utils_list_insert_head_value(&items, value);
- plc4c_utils_list_insert_head_value(&items, &value);
+ plc4c_list* _value = NULL;
+ plc4c_s7_read_write_szl_data_tree_item_parse(buf, (void*) &_value);
+ plc4c_utils_list_insert_head_value(items, _value);
}
}
(*_message)->s7_payload_user_data_item_cpu_function_read_szl_response_items = items;
diff --git a/sandbox/plc4c/generated-sources/s7/src/s7_var_payload_data_item.c b/sandbox/plc4c/generated-sources/s7/src/s7_var_payload_data_item.c
index f827c4a..e6c8f3f 100644
--- a/sandbox/plc4c/generated-sources/s7/src/s7_var_payload_data_item.c
+++ b/sandbox/plc4c/generated-sources/s7/src/s7_var_payload_data_item.c
@@ -45,15 +45,17 @@ plc4c_return_code plc4c_s7_read_write_s7_var_payload_data_item_parse(plc4c_spi_r
(*_message)->data_length = dataLength;
// Array field (data)
- plc4c_list data;
+ plc4c_list* data = malloc(sizeof(plc4c_list));
+ if(data == NULL) {
+ return NO_MEMORY;
+ }
{
// Count array
uint8_t itemCount = ((plc4c_s7_read_write_data_transport_size_get_size_in_bits) ? plc4c_spi_evaluation_helper_ceil((dataLength) / (8.0)) : dataLength);
for(int curItem = 0; curItem < itemCount; curItem++) {
- int8_t value = plc4c_spi_read_byte(buf, 8);
- plc4c_utils_list_insert_head_value(&data, &value);
- plc4c_utils_list_insert_head_value(&data, &value);
+ int8_t _value = plc4c_spi_read_byte(buf, 8);
+ plc4c_utils_list_insert_head_value(data, &_value);
}
}
(*_message)->data = data;
diff --git a/sandbox/plc4c/generated-sources/s7/src/s7_var_request_parameter_item.c b/sandbox/plc4c/generated-sources/s7/src/s7_var_request_parameter_item.c
index db826a5..7855af4 100644
--- a/sandbox/plc4c/generated-sources/s7/src/s7_var_request_parameter_item.c
+++ b/sandbox/plc4c/generated-sources/s7/src/s7_var_request_parameter_item.c
@@ -55,7 +55,7 @@ plc4c_return_code plc4c_s7_read_write_s7_var_request_parameter_item_parse(plc4c_
// Simple Field (address)
- plc4c_s7_read_write_s7_address address;
+ plc4c_s7_read_write_s7_address* address;
plc4c_s7_read_write_s7_address_parse(buf, (void*) &address);
(*_message)->s7_var_request_parameter_item_address_address = address;
}
diff --git a/sandbox/plc4c/generated-sources/s7/src/szl_data_tree_item.c b/sandbox/plc4c/generated-sources/s7/src/szl_data_tree_item.c
index a8be5e5..ef64b69 100644
--- a/sandbox/plc4c/generated-sources/s7/src/szl_data_tree_item.c
+++ b/sandbox/plc4c/generated-sources/s7/src/szl_data_tree_item.c
@@ -37,15 +37,17 @@ plc4c_return_code plc4c_s7_read_write_szl_data_tree_item_parse(plc4c_spi_read_bu
(*_message)->item_index = itemIndex;
// Array field (mlfb)
- plc4c_list mlfb;
+ plc4c_list* mlfb = malloc(sizeof(plc4c_list));
+ if(mlfb == NULL) {
+ return NO_MEMORY;
+ }
{
// Count array
uint8_t itemCount = 20;
for(int curItem = 0; curItem < itemCount; curItem++) {
- int8_t value = plc4c_spi_read_byte(buf, 8);
- plc4c_utils_list_insert_head_value(&mlfb, &value);
- plc4c_utils_list_insert_head_value(&mlfb, &value);
+ int8_t _value = plc4c_spi_read_byte(buf, 8);
+ plc4c_utils_list_insert_head_value(mlfb, &_value);
}
}
(*_message)->mlfb = mlfb;
diff --git a/sandbox/plc4c/generated-sources/s7/src/tpkt_packet.c b/sandbox/plc4c/generated-sources/s7/src/tpkt_packet.c
index c83283e..4a7ce24 100644
--- a/sandbox/plc4c/generated-sources/s7/src/tpkt_packet.c
+++ b/sandbox/plc4c/generated-sources/s7/src/tpkt_packet.c
@@ -51,7 +51,7 @@ plc4c_return_code plc4c_s7_read_write_tpkt_packet_parse(plc4c_spi_read_buffer* b
uint16_t len = plc4c_spi_read_unsigned_int(buf, 16);
// Simple Field (payload)
- plc4c_s7_read_write_cotp_packet payload;
+ plc4c_s7_read_write_cotp_packet* payload;
plc4c_s7_read_write_cotp_packet_parse(buf, (len) - (4), (void*) &payload);
(*_message)->payload = payload;
diff --git a/sandbox/plc4c/spi/include/plc4c/spi/evaluation_helper.h b/sandbox/plc4c/spi/include/plc4c/spi/evaluation_helper.h
index 32a6d2c..76b75fb 100644
--- a/sandbox/plc4c/spi/include/plc4c/spi/evaluation_helper.h
+++ b/sandbox/plc4c/spi/include/plc4c/spi/evaluation_helper.h
@@ -27,6 +27,6 @@ bool plc4c_spi_evaluation_helper_equals(int a, int b);
double plc4c_spi_evaluation_helper_ceil(double a);
-uint8_t plc4c_spi_evaluation_helper_count(plc4c_list a);
+uint8_t plc4c_spi_evaluation_helper_count(plc4c_list* a);
#endif // PLC4C_SPI_EVALUATION_HELPER_H_
diff --git a/sandbox/plc4c/spi/src/evaluation_helper.c b/sandbox/plc4c/spi/src/evaluation_helper.c
index 9be479f..a0aff22 100644
--- a/sandbox/plc4c/spi/src/evaluation_helper.c
+++ b/sandbox/plc4c/spi/src/evaluation_helper.c
@@ -30,7 +30,7 @@ double plc4c_spi_evaluation_helper_ceil(double a) {
return ceil(a);
}
-uint8_t plc4c_spi_evaluation_helper_count(plc4c_list a) {
- return plc4c_utils_list_size(&a);
+uint8_t plc4c_spi_evaluation_helper_count(plc4c_list* a) {
+ return plc4c_utils_list_size(a);
}