summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/binaryen-c.cpp15
-rw-r--r--src/binaryen-c.h9
2 files changed, 24 insertions, 0 deletions
diff --git a/src/binaryen-c.cpp b/src/binaryen-c.cpp
index 0cc4bb115..e2afe66dc 100644
--- a/src/binaryen-c.cpp
+++ b/src/binaryen-c.cpp
@@ -184,6 +184,21 @@ BinaryenPackedType BinaryenPackedTypeInt16(void) {
return Field::PackedType::i16;
}
+// Heap types
+
+BinaryenHeapType BinaryenTypeGetHeapType(BinaryenType type) {
+ return Type(type).getHeapType().getID();
+}
+bool BinaryenTypeIsNullable(BinaryenType type) {
+ return Type(type).isNullable();
+}
+BinaryenType BinaryenTypeFromHeapType(BinaryenHeapType heapType,
+ bool nullable) {
+ return Type(HeapType(heapType),
+ nullable ? Nullability::Nullable : Nullability::NonNullable)
+ .getID();
+}
+
// TypeSystem
BinaryenTypeSystem BinaryenTypeSystemEquirecursive() {
diff --git a/src/binaryen-c.h b/src/binaryen-c.h
index bf8ed01bb..7b5c22bf9 100644
--- a/src/binaryen-c.h
+++ b/src/binaryen-c.h
@@ -129,6 +129,15 @@ BINARYEN_API BinaryenPackedType BinaryenPackedTypeNotPacked(void);
BINARYEN_API BinaryenPackedType BinaryenPackedTypeInt8(void);
BINARYEN_API BinaryenPackedType BinaryenPackedTypeInt16(void);
+// Heap types
+
+typedef uintptr_t BinaryenHeapType;
+
+BINARYEN_API BinaryenHeapType BinaryenTypeGetHeapType(BinaryenType type);
+BINARYEN_API bool BinaryenTypeIsNullable(BinaryenType type);
+BINARYEN_API BinaryenType BinaryenTypeFromHeapType(BinaryenHeapType heapType,
+ bool nullable);
+
// TypeSystem
typedef uint32_t BinaryenTypeSystem;