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 2019/07/30 09:50:13 UTC
[plc4x] branch develop updated: - Make the code generation of
arrayFields work with simple fields.
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 8c9e36a - Make the code generation of arrayFields work with simple fields.
8c9e36a is described below
commit 8c9e36a9740a013492f12ee2b8f242110a25ce94
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Tue Jul 30 11:50:03 2019 +0200
- Make the code generation of arrayFields work with simple fields.
---
.../language/java/JavaLanguageTemplateHelper.java | 30 ++++++++++++++--------
.../main/resources/templates/java/io-template.ftlh | 2 +-
2 files changed, 20 insertions(+), 12 deletions(-)
diff --git a/build-utils/language-java/src/main/java/org/apache/plc4x/language/java/JavaLanguageTemplateHelper.java b/build-utils/language-java/src/main/java/org/apache/plc4x/language/java/JavaLanguageTemplateHelper.java
index 0f7745d..35531bc 100644
--- a/build-utils/language-java/src/main/java/org/apache/plc4x/language/java/JavaLanguageTemplateHelper.java
+++ b/build-utils/language-java/src/main/java/org/apache/plc4x/language/java/JavaLanguageTemplateHelper.java
@@ -47,49 +47,57 @@ public class JavaLanguageTemplateHelper implements FreemarkerLanguageTemplateHel
public String getLanguageTypeNameForField(TypedField field) {
boolean optional = field instanceof OptionalField;
+ return getLanguageTypeNameForField(!optional, field);
+ }
+
+ public String getNonPrimitiveLanguageTypeNameForField(TypedField field) {
+ return getLanguageTypeNameForField(false, field);
+ }
+
+ private String getLanguageTypeNameForField(boolean allowPrimitive, TypedField field) {
TypeReference typeReference = field.getType();
if(typeReference instanceof SimpleTypeReference) {
SimpleTypeReference simpleTypeReference = (SimpleTypeReference) typeReference;
switch (simpleTypeReference.getBaseType()) {
case BIT: {
- return optional ? "Boolean" : "boolean";
+ return allowPrimitive ? "boolean" : "Boolean";
}
case UINT: {
if (simpleTypeReference.getSize() <= 4) {
- return optional ? "Byte" : "byte";
+ return allowPrimitive ? "byte" : "Byte";
}
if (simpleTypeReference.getSize() <= 8) {
- return optional ? "Short" : "short";
+ return allowPrimitive ? "short" : "Short";
}
if (simpleTypeReference.getSize() <= 16) {
- return optional ? "Integer" : "int";
+ return allowPrimitive ? "int" : "Integer";
}
if (simpleTypeReference.getSize() <= 32) {
- return optional ? "Long" : "long";
+ return allowPrimitive ? "long" : "Long";
}
return "BigInteger";
}
case INT: {
if (simpleTypeReference.getSize() <= 8) {
- return optional ? "Byte" : "byte";
+ return allowPrimitive ? "byte" : "Byte";
}
if (simpleTypeReference.getSize() <= 16) {
- return optional ? "Short" : "short";
+ return allowPrimitive ? "short" : "Short";
}
if (simpleTypeReference.getSize() <= 32) {
- return optional ? "Integer" : "int";
+ return allowPrimitive ? "int" : "Integer";
}
if (simpleTypeReference.getSize() <= 64) {
- return optional ? "Long" : "long";
+ return allowPrimitive ? "long" : "Long";
}
return "BigInteger";
}
case FLOAT: {
if (simpleTypeReference.getSize() <= 32) {
- return optional ? "Float" : "float";
+ return allowPrimitive ? "float" : "Float";
}
if (simpleTypeReference.getSize() <= 64) {
- return optional ? "Double" : "double";
+ return allowPrimitive ? "double" : "Double";
}
return "BigDecimal";
}
diff --git a/build-utils/language-java/src/main/resources/templates/java/io-template.ftlh b/build-utils/language-java/src/main/resources/templates/java/io-template.ftlh
index bfdee08..f4b0880 100644
--- a/build-utils/language-java/src/main/resources/templates/java/io-template.ftlh
+++ b/build-utils/language-java/src/main/resources/templates/java/io-template.ftlh
@@ -89,7 +89,7 @@ public class ${typeName}IO implements MessageIO<${typeName}<#if helper.isDiscrim
${field.name}[i] = <#if helper.isSimpleType(field.type)>io.${helper.getReadBufferReadMethodCall(field.type)}<#else>${field.type.name?uncap_first}IO.parse(io<#if field.params?has_content>, <#list field.params as parserArgument>${parserArgument}<#sep>, </#sep></#list></#if>)</#if>;
}
<#else>
- List<${helper.getLanguageTypeNameForField(field)}> ${field.name}List = <#if helper.isCountArray(field)>new ArrayList<>(size)<#else>new LinkedList<>()</#if>;
+ List<${helper.getNonPrimitiveLanguageTypeNameForField(field)}> ${field.name}List = <#if helper.isCountArray(field)>new ArrayList<>(size)<#else>new LinkedList<>()</#if>;
int ${field.name}EndPos = io.getPos() + ${field.name}Size;
while(io.getPos() < ${field.name}EndPos) {
<#if field.lengthExpression.contains("curPos")>