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 2023/02/02 19:31:56 UTC

[plc4x] branch featrue/cdutz/arrays-with-special-variables updated: refactor(code-gen): Changed the code-gen to support a "_lastItem" variable inside array elements

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

cdutz pushed a commit to branch featrue/cdutz/arrays-with-special-variables
in repository https://gitbox.apache.org/repos/asf/plc4x.git


The following commit(s) were added to refs/heads/featrue/cdutz/arrays-with-special-variables by this push:
     new 8dfef5247a refactor(code-gen): Changed the code-gen to support a "_lastItem" variable inside array elements
8dfef5247a is described below

commit 8dfef5247a9b68c38a0847bfafaeac28edb64c38
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Thu Feb 2 20:31:48 2023 +0100

    refactor(code-gen): Changed the code-gen to support a "_lastItem" variable inside array elements
    
    - Updated the S7 spec and tests as well as the driver to support this.
    
    We're currently generating the functionality in all complex types and arrays, but it should be quite easy to only generate it only into types that reference "_lastItem".
    
    WARN: PLC4C and PLC4Go are currently broken.
---
 .../main/generated/org/apache/plc4x/java/df1/readwrite/DF1Command.java | 3 +++
 .../main/generated/org/apache/plc4x/java/df1/readwrite/DF1Symbol.java  | 3 +++
 .../org/apache/plc4x/java/df1/readwrite/DF1SymbolMessageFrame.java     | 3 +++
 .../org/apache/plc4x/java/df1/readwrite/DF1SymbolMessageFrameACK.java  | 3 +++
 .../org/apache/plc4x/java/df1/readwrite/DF1SymbolMessageFrameNAK.java  | 3 +++
 .../org/apache/plc4x/java/df1/readwrite/DF1UnprotectedReadRequest.java | 3 +++
 .../apache/plc4x/java/df1/readwrite/DF1UnprotectedReadResponse.java    | 3 +++
 7 files changed, 21 insertions(+)

diff --git a/sandbox/test-java-df1-driver/src/main/generated/org/apache/plc4x/java/df1/readwrite/DF1Command.java b/sandbox/test-java-df1-driver/src/main/generated/org/apache/plc4x/java/df1/readwrite/DF1Command.java
index 4937650bf0..c1794610e3 100644
--- a/sandbox/test-java-df1-driver/src/main/generated/org/apache/plc4x/java/df1/readwrite/DF1Command.java
+++ b/sandbox/test-java-df1-driver/src/main/generated/org/apache/plc4x/java/df1/readwrite/DF1Command.java
@@ -63,6 +63,7 @@ public abstract class DF1Command implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("DF1Command");
 
@@ -90,6 +91,7 @@ public abstract class DF1Command implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     DF1Command _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Discriminator Field (commandCode)
     lengthInBits += 8;
@@ -116,6 +118,7 @@ public abstract class DF1Command implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     short commandCode = readDiscriminatorField("commandCode", readUnsignedShort(readBuffer, 8));
 
diff --git a/sandbox/test-java-df1-driver/src/main/generated/org/apache/plc4x/java/df1/readwrite/DF1Symbol.java b/sandbox/test-java-df1-driver/src/main/generated/org/apache/plc4x/java/df1/readwrite/DF1Symbol.java
index c505515b8f..ae9a5552ad 100644
--- a/sandbox/test-java-df1-driver/src/main/generated/org/apache/plc4x/java/df1/readwrite/DF1Symbol.java
+++ b/sandbox/test-java-df1-driver/src/main/generated/org/apache/plc4x/java/df1/readwrite/DF1Symbol.java
@@ -56,6 +56,7 @@ public abstract class DF1Symbol implements Message {
 
   public void serialize(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("DF1Symbol");
 
@@ -88,6 +89,7 @@ public abstract class DF1Symbol implements Message {
   public int getLengthInBits() {
     int lengthInBits = 0;
     DF1Symbol _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Const Field (messageStart)
     lengthInBits += 8;
@@ -110,6 +112,7 @@ public abstract class DF1Symbol implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     short messageStart =
         readConstField(
diff --git a/sandbox/test-java-df1-driver/src/main/generated/org/apache/plc4x/java/df1/readwrite/DF1SymbolMessageFrame.java b/sandbox/test-java-df1-driver/src/main/generated/org/apache/plc4x/java/df1/readwrite/DF1SymbolMessageFrame.java
index 84c4718d94..9d5619645d 100644
--- a/sandbox/test-java-df1-driver/src/main/generated/org/apache/plc4x/java/df1/readwrite/DF1SymbolMessageFrame.java
+++ b/sandbox/test-java-df1-driver/src/main/generated/org/apache/plc4x/java/df1/readwrite/DF1SymbolMessageFrame.java
@@ -81,6 +81,7 @@ public class DF1SymbolMessageFrame extends DF1Symbol implements Message {
   @Override
   protected void serializeDF1SymbolChild(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("DF1SymbolMessageFrame");
 
@@ -140,6 +141,7 @@ public class DF1SymbolMessageFrame extends DF1Symbol implements Message {
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     DF1SymbolMessageFrame _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (destinationAddress)
     lengthInBits += 8;
@@ -168,6 +170,7 @@ public class DF1SymbolMessageFrame extends DF1Symbol implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     short destinationAddress =
         readSimpleField(
diff --git a/sandbox/test-java-df1-driver/src/main/generated/org/apache/plc4x/java/df1/readwrite/DF1SymbolMessageFrameACK.java b/sandbox/test-java-df1-driver/src/main/generated/org/apache/plc4x/java/df1/readwrite/DF1SymbolMessageFrameACK.java
index 664981a3b9..b32c70f641 100644
--- a/sandbox/test-java-df1-driver/src/main/generated/org/apache/plc4x/java/df1/readwrite/DF1SymbolMessageFrameACK.java
+++ b/sandbox/test-java-df1-driver/src/main/generated/org/apache/plc4x/java/df1/readwrite/DF1SymbolMessageFrameACK.java
@@ -49,6 +49,7 @@ public class DF1SymbolMessageFrameACK extends DF1Symbol implements Message {
   @Override
   protected void serializeDF1SymbolChild(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("DF1SymbolMessageFrameACK");
 
@@ -64,6 +65,7 @@ public class DF1SymbolMessageFrameACK extends DF1Symbol implements Message {
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     DF1SymbolMessageFrameACK _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     return lengthInBits;
   }
@@ -74,6 +76,7 @@ public class DF1SymbolMessageFrameACK extends DF1Symbol implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     readBuffer.closeContext("DF1SymbolMessageFrameACK");
     // Create the instance
diff --git a/sandbox/test-java-df1-driver/src/main/generated/org/apache/plc4x/java/df1/readwrite/DF1SymbolMessageFrameNAK.java b/sandbox/test-java-df1-driver/src/main/generated/org/apache/plc4x/java/df1/readwrite/DF1SymbolMessageFrameNAK.java
index 2257f1f4c1..68ddc46623 100644
--- a/sandbox/test-java-df1-driver/src/main/generated/org/apache/plc4x/java/df1/readwrite/DF1SymbolMessageFrameNAK.java
+++ b/sandbox/test-java-df1-driver/src/main/generated/org/apache/plc4x/java/df1/readwrite/DF1SymbolMessageFrameNAK.java
@@ -49,6 +49,7 @@ public class DF1SymbolMessageFrameNAK extends DF1Symbol implements Message {
   @Override
   protected void serializeDF1SymbolChild(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("DF1SymbolMessageFrameNAK");
 
@@ -64,6 +65,7 @@ public class DF1SymbolMessageFrameNAK extends DF1Symbol implements Message {
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     DF1SymbolMessageFrameNAK _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     return lengthInBits;
   }
@@ -74,6 +76,7 @@ public class DF1SymbolMessageFrameNAK extends DF1Symbol implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     readBuffer.closeContext("DF1SymbolMessageFrameNAK");
     // Create the instance
diff --git a/sandbox/test-java-df1-driver/src/main/generated/org/apache/plc4x/java/df1/readwrite/DF1UnprotectedReadRequest.java b/sandbox/test-java-df1-driver/src/main/generated/org/apache/plc4x/java/df1/readwrite/DF1UnprotectedReadRequest.java
index 269a1678c4..1b4a8d2b72 100644
--- a/sandbox/test-java-df1-driver/src/main/generated/org/apache/plc4x/java/df1/readwrite/DF1UnprotectedReadRequest.java
+++ b/sandbox/test-java-df1-driver/src/main/generated/org/apache/plc4x/java/df1/readwrite/DF1UnprotectedReadRequest.java
@@ -63,6 +63,7 @@ public class DF1UnprotectedReadRequest extends DF1Command implements Message {
   @Override
   protected void serializeDF1CommandChild(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("DF1UnprotectedReadRequest");
 
@@ -84,6 +85,7 @@ public class DF1UnprotectedReadRequest extends DF1Command implements Message {
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     DF1UnprotectedReadRequest _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Simple field (address)
     lengthInBits += 16;
@@ -100,6 +102,7 @@ public class DF1UnprotectedReadRequest extends DF1Command implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     int address = readSimpleField("address", readUnsignedInt(readBuffer, 16));
 
diff --git a/sandbox/test-java-df1-driver/src/main/generated/org/apache/plc4x/java/df1/readwrite/DF1UnprotectedReadResponse.java b/sandbox/test-java-df1-driver/src/main/generated/org/apache/plc4x/java/df1/readwrite/DF1UnprotectedReadResponse.java
index 25f1c8df5b..7bca0f8319 100644
--- a/sandbox/test-java-df1-driver/src/main/generated/org/apache/plc4x/java/df1/readwrite/DF1UnprotectedReadResponse.java
+++ b/sandbox/test-java-df1-driver/src/main/generated/org/apache/plc4x/java/df1/readwrite/DF1UnprotectedReadResponse.java
@@ -57,6 +57,7 @@ public class DF1UnprotectedReadResponse extends DF1Command implements Message {
   @Override
   protected void serializeDF1CommandChild(WriteBuffer writeBuffer) throws SerializationException {
     PositionAware positionAware = writeBuffer;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
     int startPos = positionAware.getPos();
     writeBuffer.pushContext("DF1UnprotectedReadResponse");
 
@@ -80,6 +81,7 @@ public class DF1UnprotectedReadResponse extends DF1Command implements Message {
   public int getLengthInBits() {
     int lengthInBits = super.getLengthInBits();
     DF1UnprotectedReadResponse _value = this;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     // Manual Array Field (data)
     lengthInBits += org.apache.plc4x.java.df1.readwrite.utils.StaticHelper.dataLength(data) * 8;
@@ -93,6 +95,7 @@ public class DF1UnprotectedReadResponse extends DF1Command implements Message {
     PositionAware positionAware = readBuffer;
     int startPos = positionAware.getPos();
     int curPos;
+    boolean _lastItem = ThreadLocalHelper.lastItemThreadLocal.get();
 
     byte[] data =
         readManualByteArrayField(