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/10/22 18:16:26 UTC
[plc4x] branch feature/mspec-ng updated: - Continued cleaning up
the enum work a bit
This is an automated email from the ASF dual-hosted git repository.
cdutz pushed a commit to branch feature/mspec-ng
in repository https://gitbox.apache.org/repos/asf/plc4x.git
The following commit(s) were added to refs/heads/feature/mspec-ng by this push:
new 7993338 - Continued cleaning up the enum work a bit
7993338 is described below
commit 7993338d985afcb037bc126d7fc5c51b9e0cc685
Author: cdutz <ch...@c-ware.de>
AuthorDate: Fri Oct 22 20:15:39 2021 +0200
- Continued cleaning up the enum work a bit
---
.../src/main/resources/templates/java/io-template.java.ftlh | 5 -----
.../protocol-base-mspec/src/test/resources/mspec.example | 2 +-
.../protocol-base-mspec/src/test/resources/mspec.example2 | 6 +++---
.../protocol-test/src/main/resources/protocols/test/test.mspec | 6 +++---
.../apache/plc4x/java/spi/codegen/fields/FieldReaderFactory.java | 4 ++++
5 files changed, 11 insertions(+), 12 deletions(-)
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 2bab6b3..1426855 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
@@ -536,11 +536,6 @@ public class ${type.name}IO implements <#if outputFlavor != "passive">MessageIO<
writeBuffer.pushContext("${enumField.name}");
// Enum field (${enumField.name})
${helper.getLanguageTypeNameForField(field)} ${enumField.name} = (${helper.getLanguageTypeNameForField(enumField)}) _value.get${enumField.name?cap_first}();
- <#if enumField.fieldName.isPresent()>
- ${helper.getWriteBufferWriteMethodCall(helper.getTypeDefinitionForTypeReference(enumField.type).name, helper.getEnumFieldSimpleTypeReference(enumField.type, enumField.fieldName.orElseThrow()), "(" + enumField.name + ".get" + enumField.fieldName.orElseThrow()?cap_first + "())", enumField, "WithReaderWriterArgs.WithAdditionalStringRepresentation(${enumField.name}.name())")};
- <#else>
- ${helper.getWriteBufferWriteMethodCall(helper.getTypeDefinitionForTypeReference(enumField.type).name, helper.getEnumBaseTypeReference(enumField.type), "(" + enumField.name + ".getValue())", enumField, "WithReaderWriterArgs.WithAdditionalStringRepresentation(${enumField.name}.name())")};
- </#if>
writeBuffer.popContext("${enumField.name}");
<#break>
<#case "implicit">
diff --git a/code-generation/protocol-base-mspec/src/test/resources/mspec.example b/code-generation/protocol-base-mspec/src/test/resources/mspec.example
index d023901..653a325 100644
--- a/code-generation/protocol-base-mspec/src/test/resources/mspec.example
+++ b/code-generation/protocol-base-mspec/src/test/resources/mspec.example
@@ -138,7 +138,7 @@
// This contains the AmsPort of the station, from which the packet was sent.
[simple uint 16 'sourceAmsPort' ]
// 2 bytes.
- [enum CommandId 'commandId' ]
+ [enum CommandId 'commandId' 'lalala']
// 2 bytes.
[simple State 'state' ]
// 4 bytes Size of the data range. The unit is byte.
diff --git a/code-generation/protocol-base-mspec/src/test/resources/mspec.example2 b/code-generation/protocol-base-mspec/src/test/resources/mspec.example2
index 722da05..2052ac8 100644
--- a/code-generation/protocol-base-mspec/src/test/resources/mspec.example2
+++ b/code-generation/protocol-base-mspec/src/test/resources/mspec.example2
@@ -40,7 +40,7 @@
[const uint 8 'constField' '5']
// Discriminated Field can't be used in simple type
//[discriminator uint 8 'discriminatorField']
- [enum EnumType 'enumField']
+ [enum EnumType 'enumField' 'lalala']
[implicit uint 8 'implicitField' 'simpleField']
[optional uint 8 'optionalField' 'simpleField == 5']
[padding uint 8 'paddingField' '0x00' 'simpleField']
@@ -60,7 +60,7 @@
[const uint 8 'constField' '5']
// Discriminated Field can't be used in simple type
//[discriminator uint 8 'discriminatorField']
- [enum EnumType 'enumField']
+ [enum EnumType 'enumField' 'lalala']
[implicit uint 8 'implicitField' 'simpleField']
[optional uint 8 'optionalField' 'simpleField == 5']
[padding uint 8 'paddingField' '0x00' 'simpleField']
@@ -172,7 +172,7 @@
]
[type 'EnumTypeTest'
- [enum EnumType 'enumField']
+ [enum EnumType 'enumField' 'lalala']
]
[type 'PascalStringTypeTest'
diff --git a/code-generation/protocol-test/src/main/resources/protocols/test/test.mspec b/code-generation/protocol-test/src/main/resources/protocols/test/test.mspec
index 2a50368..12c1a8a 100644
--- a/code-generation/protocol-test/src/main/resources/protocols/test/test.mspec
+++ b/code-generation/protocol-test/src/main/resources/protocols/test/test.mspec
@@ -40,7 +40,7 @@
[const uint 8 'constField' '5']
// Discriminated Field can't be used in simple type
//[discriminator uint 8 'discriminatorField']
- [enum EnumType 'enumField']
+ [enum EnumType 'enumField' 'lalala']
[implicit uint 8 'implicitField' 'simpleField']
[optional uint 8 'optionalField' 'simpleField == 5']
[padding uint 8 'paddingField' '0x00' 'simpleField']
@@ -60,7 +60,7 @@
[const uint 8 'constField' '5']
// Discriminated Field can't be used in simple type
//[discriminator uint 8 'discriminatorField']
- [enum EnumType 'enumField']
+ [enum EnumType 'enumField' 'lalala']
[implicit uint 8 'implicitField' 'simpleField']
[optional uint 8 'optionalField' 'simpleField == 5']
[padding uint 8 'paddingField' '0x00' 'simpleField']
@@ -172,7 +172,7 @@
]
[type 'EnumTypeTest'
- [enum EnumType 'enumField']
+ [enum EnumType 'enumField' 'lalala']
]
[type 'PascalStringTypeTest'
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/fields/FieldReaderFactory.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/fields/FieldReaderFactory.java
index 567a050..283db6a 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/fields/FieldReaderFactory.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/codegen/fields/FieldReaderFactory.java
@@ -96,6 +96,10 @@ public class FieldReaderFactory {
return new FieldReaderDiscriminator<T>().readField(logicalName, dataReader, readerArgs);
}
+ public static <T> T readEnumField(String logicalName, String innerName, DataReader<T> dataReader, WithReaderArgs... readerArgs) throws ParseException {
+ return new FieldReaderEnum<T>().readField(logicalName, innerName, dataReader, readerArgs);
+ }
+
public static <T> T readImplicitField(String logicalName, DataReader<T> dataReader, WithReaderArgs... readerArgs) throws ParseException {
return new FieldReaderImplicit<T>().readField(logicalName, dataReader, readerArgs);
}