summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlon Zakai <azakai@google.com>2024-07-09 10:06:15 -0700
committerGitHub <noreply@github.com>2024-07-09 10:06:15 -0700
commit0750bdbc1f7c356a160493acdb8dc314a68f1f12 (patch)
tree982d3597fd2aef1bfa48acf79cf27403de79541f /src
parent081f28b337e50ff6837d580fed61254e92abe76a (diff)
downloadbinaryen-0750bdbc1f7c356a160493acdb8dc314a68f1f12.tar.gz
binaryen-0750bdbc1f7c356a160493acdb8dc314a68f1f12.tar.bz2
binaryen-0750bdbc1f7c356a160493acdb8dc314a68f1f12.zip
[C API] Add APIs for getting/setting function types, and a CallRef example (#6721)
Fixes #6718
Diffstat (limited to 'src')
-rw-r--r--src/binaryen-c.cpp6
-rw-r--r--src/binaryen-c.h5
2 files changed, 11 insertions, 0 deletions
diff --git a/src/binaryen-c.cpp b/src/binaryen-c.cpp
index 9c9a1c54f..be80206f5 100644
--- a/src/binaryen-c.cpp
+++ b/src/binaryen-c.cpp
@@ -5684,6 +5684,12 @@ void BinaryenFunctionSetBody(BinaryenFunctionRef func,
assert(body);
((Function*)func)->body = (Expression*)body;
}
+BinaryenHeapType BinaryenFunctionGetType(BinaryenFunctionRef func) {
+ return ((Function*)func)->type.getID();
+}
+void BinaryenFunctionSetType(BinaryenFunctionRef func, BinaryenHeapType type) {
+ ((Function*)func)->type = HeapType(type);
+}
void BinaryenFunctionOptimize(BinaryenFunctionRef func,
BinaryenModuleRef module) {
PassRunner passRunner((Module*)module);
diff --git a/src/binaryen-c.h b/src/binaryen-c.h
index 45230a117..35f1d8eb8 100644
--- a/src/binaryen-c.h
+++ b/src/binaryen-c.h
@@ -3136,6 +3136,11 @@ BinaryenFunctionGetBody(BinaryenFunctionRef func);
// Sets the body of the specified `Function`.
BINARYEN_API void BinaryenFunctionSetBody(BinaryenFunctionRef func,
BinaryenExpressionRef body);
+// Gets the type of the specified `Function`.
+BINARYEN_API BinaryenHeapType BinaryenFunctionGetType(BinaryenFunctionRef func);
+// Sets the type of the specified `Function`.
+BINARYEN_API void BinaryenFunctionSetType(BinaryenFunctionRef func,
+ BinaryenHeapType type);
// Runs the standard optimization passes on the function. Uses the currently set
// global optimize and shrink level.