From 5ec2e34c57233702d92f2e4062e1adc099e654b7 Mon Sep 17 00:00:00 2001 From: Volker Berlin Date: Fri, 10 Apr 2020 21:05:46 +0200 Subject: [PATCH] add isSubTypeOf(9 to the type hierarchy --- src/de/inetsoftware/jwebassembly/wasm/AnyType.java | 11 +++++++++++ src/de/inetsoftware/jwebassembly/wasm/ArrayType.java | 8 ++++++++ src/de/inetsoftware/jwebassembly/wasm/ValueType.java | 8 ++++++++ 3 files changed, 27 insertions(+) diff --git a/src/de/inetsoftware/jwebassembly/wasm/AnyType.java b/src/de/inetsoftware/jwebassembly/wasm/AnyType.java index e2e5bf2..9d384f1 100644 --- a/src/de/inetsoftware/jwebassembly/wasm/AnyType.java +++ b/src/de/inetsoftware/jwebassembly/wasm/AnyType.java @@ -15,6 +15,8 @@ */ package de.inetsoftware.jwebassembly.wasm; +import javax.annotation.Nonnull; + /** * Interface of all possible types in WebAssembly. This are predefined (native) types and custom types in the type section. *

@@ -36,4 +38,13 @@ public interface AnyType {
      * @return the code
      */
     public int getCode();
+
+    /**
+     * Check if this is a sub type of given type.
+     * 
+     * @param type
+     *            type to check
+     * @return true, if both are identical or the type is a sub type
+     */
+    public boolean isSubTypeOf( @Nonnull AnyType type );
 }
diff --git a/src/de/inetsoftware/jwebassembly/wasm/ArrayType.java b/src/de/inetsoftware/jwebassembly/wasm/ArrayType.java
index ae57a0f..bf1272e 100644
--- a/src/de/inetsoftware/jwebassembly/wasm/ArrayType.java
+++ b/src/de/inetsoftware/jwebassembly/wasm/ArrayType.java
@@ -50,6 +50,14 @@ public class ArrayType implements AnyType {
         return ValueType.anyref.getCode();
     }
 
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean isSubTypeOf( AnyType type ) {
+        return type == this || type == ValueType.anyref;
+    }
+
     /**
      * {@inheritDoc}
      */
diff --git a/src/de/inetsoftware/jwebassembly/wasm/ValueType.java b/src/de/inetsoftware/jwebassembly/wasm/ValueType.java
index 2694eba..8dc20de 100644
--- a/src/de/inetsoftware/jwebassembly/wasm/ValueType.java
+++ b/src/de/inetsoftware/jwebassembly/wasm/ValueType.java
@@ -57,4 +57,12 @@ public enum ValueType implements AnyType {
     public int getCode() {
         return code;
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean isSubTypeOf( AnyType type ) {
+        return type == this;
+    }
 }