diff options
author | dcode <dcode@dcode.io> | 2022-10-18 23:16:07 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-18 14:16:07 -0700 |
commit | e4fd739f72eae49aa47bef06af9f38625a3a9f33 (patch) | |
tree | 6ee226d199c05535a06539b6868d77b060854a0b /src | |
parent | 34e7e49cd7fbf520e4f3cfb976b1c88713b18e45 (diff) | |
download | binaryen-e4fd739f72eae49aa47bef06af9f38625a3a9f33.tar.gz binaryen-e4fd739f72eae49aa47bef06af9f38625a3a9f33.tar.bz2 binaryen-e4fd739f72eae49aa47bef06af9f38625a3a9f33.zip |
[C API] Add bottom heap types and array heap type (#5150)
Adds `BinaryenHeapTypeNone`, `BinaryenHeapTypeNoext` and `BinaryenHeapTypeNofunc` to obtain the bottom heap types. Also adds `BinaryenHeapTypeIsBottom` to test whether a given heap type is a bottom type, and `BinaryenHeapTypeGetBottom` to obtain the respective bottom type given a heap type.
Diffstat (limited to 'src')
-rw-r--r-- | src/binaryen-c.cpp | 22 | ||||
-rw-r--r-- | src/binaryen-c.h | 9 |
2 files changed, 31 insertions, 0 deletions
diff --git a/src/binaryen-c.cpp b/src/binaryen-c.cpp index ec70baef2..cd3806810 100644 --- a/src/binaryen-c.cpp +++ b/src/binaryen-c.cpp @@ -202,6 +202,9 @@ BinaryenType BinaryenTypeI31ref(void) { BinaryenType BinaryenTypeDataref(void) { return Type(HeapType::data, NonNullable).getID(); } +BinaryenType BinaryenTypeArrayref(void) { + return Type(HeapType::array, Nullable).getID(); +} BinaryenType BinaryenTypeStringref() { return Type(HeapType::string, Nullable).getID(); } @@ -284,6 +287,9 @@ BinaryenHeapType BinaryenHeapTypeI31() { BinaryenHeapType BinaryenHeapTypeData() { return static_cast<BinaryenHeapType>(HeapType::BasicHeapType::data); } +BinaryenHeapType BinaryenHeapTypeArray() { + return static_cast<BinaryenHeapType>(HeapType::BasicHeapType::array); +} BinaryenHeapType BinaryenHeapTypeString() { return static_cast<BinaryenHeapType>(HeapType::BasicHeapType::string); } @@ -299,6 +305,22 @@ BinaryenHeapType BinaryenHeapTypeStringviewIter() { return static_cast<BinaryenHeapType>( HeapType::BasicHeapType::stringview_iter); } +BinaryenHeapType BinaryenHeapTypeNone() { + return static_cast<BinaryenHeapType>(HeapType::BasicHeapType::none); +} +BinaryenHeapType BinaryenHeapTypeNoext() { + return static_cast<BinaryenHeapType>(HeapType::BasicHeapType::noext); +} +BinaryenHeapType BinaryenHeapTypeNofunc() { + return static_cast<BinaryenHeapType>(HeapType::BasicHeapType::nofunc); +} + +bool BinaryenHeapTypeIsBottom(BinaryenHeapType heapType) { + return HeapType(heapType).isBottom(); +} +BinaryenHeapType BinaryenHeapTypeGetBottom(BinaryenHeapType heapType) { + return static_cast<BinaryenHeapType>(HeapType(heapType).getBottom()); +} BinaryenHeapType BinaryenTypeGetHeapType(BinaryenType type) { return Type(type).getHeapType().getID(); diff --git a/src/binaryen-c.h b/src/binaryen-c.h index 9cc282721..ea3988cae 100644 --- a/src/binaryen-c.h +++ b/src/binaryen-c.h @@ -105,6 +105,7 @@ BINARYEN_API BinaryenType BinaryenTypeAnyref(void); BINARYEN_API BinaryenType BinaryenTypeEqref(void); BINARYEN_API BinaryenType BinaryenTypeI31ref(void); BINARYEN_API BinaryenType BinaryenTypeDataref(void); +BINARYEN_API BinaryenType BinaryenTypeArrayref(void); BINARYEN_API BinaryenType BinaryenTypeStringref(void); BINARYEN_API BinaryenType BinaryenTypeStringviewWTF8(void); BINARYEN_API BinaryenType BinaryenTypeStringviewWTF16(void); @@ -146,10 +147,18 @@ BINARYEN_API BinaryenHeapType BinaryenHeapTypeAny(void); BINARYEN_API BinaryenHeapType BinaryenHeapTypeEq(void); BINARYEN_API BinaryenHeapType BinaryenHeapTypeI31(void); BINARYEN_API BinaryenHeapType BinaryenHeapTypeData(void); +BINARYEN_API BinaryenHeapType BinaryenHeapTypeArray(void); BINARYEN_API BinaryenHeapType BinaryenHeapTypeString(void); BINARYEN_API BinaryenHeapType BinaryenHeapTypeStringviewWTF8(void); BINARYEN_API BinaryenHeapType BinaryenHeapTypeStringviewWTF16(void); BINARYEN_API BinaryenHeapType BinaryenHeapTypeStringviewIter(void); +BINARYEN_API BinaryenHeapType BinaryenHeapTypeNone(void); +BINARYEN_API BinaryenHeapType BinaryenHeapTypeNoext(void); +BINARYEN_API BinaryenHeapType BinaryenHeapTypeNofunc(void); + +BINARYEN_API bool BinaryenHeapTypeIsBottom(BinaryenHeapType heapType); +BINARYEN_API BinaryenHeapType +BinaryenHeapTypeGetBottom(BinaryenHeapType heapType); BINARYEN_API BinaryenHeapType BinaryenTypeGetHeapType(BinaryenType type); BINARYEN_API bool BinaryenTypeIsNullable(BinaryenType type); |