From 1693eb642671b12aff9ea2a3be13f8bbb865ab54 Mon Sep 17 00:00:00 2001 From: nitrix Date: Fri, 6 Mar 2020 00:17:59 +0100 Subject: [PATCH] implement helper functions to determine the struct size and field offsets --- .../de/hsrm/compiler/Klang/helper/Helper.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/main/java/de/hsrm/compiler/Klang/helper/Helper.java b/src/main/java/de/hsrm/compiler/Klang/helper/Helper.java index fb71a20..c468683 100644 --- a/src/main/java/de/hsrm/compiler/Klang/helper/Helper.java +++ b/src/main/java/de/hsrm/compiler/Klang/helper/Helper.java @@ -41,4 +41,22 @@ public class Helper { throw new RuntimeException("Struct " + structDef.name + " does not contain field " + path[pathIndex]); } + + public static int getFieldOffset(StructDefinition structDef, int fieldIndex) { + return fieldIndex * 8; + } + + public static int getFieldOffset(StructDefinition structDef, String fieldName) { + for (int i = 0; i < structDef.fields.length; i++) { + if (structDef.fields[i].name.equals(fieldName)) { + return i * 8; + } + } + + return -1; + } + + public static int getFieldSizeBytes(StructDefinition structDef) { + return structDef.fields.length * 8; + } } \ No newline at end of file