summaryrefslogtreecommitdiff
path: root/src/binaryen-c.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/binaryen-c.cpp')
-rw-r--r--src/binaryen-c.cpp34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/binaryen-c.cpp b/src/binaryen-c.cpp
index 27da01616..e3780ce15 100644
--- a/src/binaryen-c.cpp
+++ b/src/binaryen-c.cpp
@@ -712,6 +712,10 @@ BinaryenOp BinaryenRefIsNull(void) { return RefIsNull; }
BinaryenOp BinaryenRefIsFunc(void) { return RefIsFunc; }
BinaryenOp BinaryenRefIsData(void) { return RefIsData; }
BinaryenOp BinaryenRefIsI31(void) { return RefIsI31; }
+BinaryenOp BinaryenRefAsNonNull(void) { return RefAsNonNull; };
+BinaryenOp BinaryenRefAsFunc(void) { return RefAsFunc; }
+BinaryenOp BinaryenRefAsData(void) { return RefAsData; };
+BinaryenOp BinaryenRefAsI31(void) { return RefAsI31; };
BinaryenExpressionRef BinaryenBlock(BinaryenModuleRef module,
const char* name,
@@ -1198,6 +1202,13 @@ BinaryenExpressionRef BinaryenRefIs(BinaryenModuleRef module,
Builder(*(Module*)module).makeRefIs(RefIsOp(op), (Expression*)value));
}
+BinaryenExpressionRef BinaryenRefAs(BinaryenModuleRef module,
+ BinaryenOp op,
+ BinaryenExpressionRef value) {
+ return static_cast<Expression*>(
+ Builder(*(Module*)module).makeRefAs(RefAsOp(op), (Expression*)value));
+}
+
BinaryenExpressionRef
BinaryenRefFunc(BinaryenModuleRef module, const char* func, BinaryenType type) {
Type type_(type);
@@ -2752,6 +2763,29 @@ void BinaryenRefIsSetValue(BinaryenExpressionRef expr,
assert(valueExpr);
static_cast<RefIs*>(expression)->value = (Expression*)valueExpr;
}
+// RefAs
+BinaryenOp BinaryenRefAsGetOp(BinaryenExpressionRef expr) {
+ auto* expression = (Expression*)expr;
+ assert(expression->is<RefAs>());
+ return static_cast<RefAs*>(expression)->op;
+}
+void BinaryenRefAsSetOp(BinaryenExpressionRef expr, BinaryenOp op) {
+ auto* expression = (Expression*)expr;
+ assert(expression->is<RefAs>());
+ static_cast<RefAs*>(expression)->op = RefAsOp(op);
+}
+BinaryenExpressionRef BinaryenRefAsGetValue(BinaryenExpressionRef expr) {
+ auto* expression = (Expression*)expr;
+ assert(expression->is<RefAs>());
+ return static_cast<RefAs*>(expression)->value;
+}
+void BinaryenRefAsSetValue(BinaryenExpressionRef expr,
+ BinaryenExpressionRef valueExpr) {
+ auto* expression = (Expression*)expr;
+ assert(expression->is<RefAs>());
+ assert(valueExpr);
+ static_cast<RefAs*>(expression)->value = (Expression*)valueExpr;
+}
// RefFunc
const char* BinaryenRefFuncGetFunc(BinaryenExpressionRef expr) {
auto* expression = (Expression*)expr;