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;
+ }
}