diff options
Diffstat (limited to 'src/binaryen-c.cpp')
-rw-r--r-- | src/binaryen-c.cpp | 34 |
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; |