diff options
author | dcode <dcode@dcode.io> | 2022-09-15 01:21:10 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-09-14 16:21:10 -0700 |
commit | 0d8aff6d85850a5f05ed6f5dc359f1b93120769d (patch) | |
tree | bb293f4555eac287550bf6de4025aa666e88cee3 /src | |
parent | 64f9732c40157b84b85dea7763a91b4fe3199093 (diff) | |
download | binaryen-0d8aff6d85850a5f05ed6f5dc359f1b93120769d.tar.gz binaryen-0d8aff6d85850a5f05ed6f5dc359f1b93120769d.tar.bz2 binaryen-0d8aff6d85850a5f05ed6f5dc359f1b93120769d.zip |
[C API] Add getters and setters for various GC/Strings expressions (#5037)
Covers CallRef, RefTest, RefCast, BrOn, StructNew, StructGet, StructSet, ArrayNew, ArrayInit, ArrayGet, ArraySet, ArrayLen, ArrayCopy, StringNew, StringConst, StringMeasure, StringEncode, StringConcat, StringEq, StringAs, StringWTF8Advance, StringWTF16Get, StringIterNext, StringIterMove, StringSliceWTF, StringSliceIter.
Diffstat (limited to 'src')
-rw-r--r-- | src/binaryen-c.cpp | 918 | ||||
-rw-r--r-- | src/binaryen-c.h | 379 |
2 files changed, 1297 insertions, 0 deletions
diff --git a/src/binaryen-c.cpp b/src/binaryen-c.cpp index 50e2e9a3c..63052edff 100644 --- a/src/binaryen-c.cpp +++ b/src/binaryen-c.cpp @@ -1606,6 +1606,20 @@ BinaryenExpressionRef BinaryenI31Get(BinaryenModuleRef module, return static_cast<Expression*>( Builder(*(Module*)module).makeI31Get((Expression*)i31, signed_ != 0)); } +BinaryenExpressionRef BinaryenCallRef(BinaryenModuleRef module, + BinaryenExpressionRef target, + BinaryenExpressionRef* operands, + BinaryenIndex numOperands, + BinaryenType type, + bool isReturn) { + std::vector<Expression*> args; + for (BinaryenIndex i = 0; i < numOperands; i++) { + args.push_back((Expression*)operands[i]); + } + return static_cast<Expression*>( + Builder(*(Module*)module) + .makeCallRef((Expression*)target, args, Type(type), isReturn)); +} BinaryenExpressionRef BinaryenRefTest(BinaryenModuleRef module, BinaryenExpressionRef ref, BinaryenHeapType intendedType) { @@ -3846,6 +3860,910 @@ void BinaryenI31GetSetSigned(BinaryenExpressionRef expr, bool signed_) { assert(expression->is<I31Get>()); static_cast<I31Get*>(expression)->signed_ = signed_ != 0; } +// CallRef +BinaryenIndex BinaryenCallRefGetNumOperands(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<CallRef>()); + return static_cast<CallRef*>(expression)->operands.size(); +} +BinaryenExpressionRef BinaryenCallRefGetOperandAt(BinaryenExpressionRef expr, + BinaryenIndex index) { + auto* expression = (Expression*)expr; + assert(expression->is<CallRef>()); + assert(index < static_cast<CallRef*>(expression)->operands.size()); + return static_cast<CallRef*>(expression)->operands[index]; +} +void BinaryenCallRefSetOperandAt(BinaryenExpressionRef expr, + BinaryenIndex index, + BinaryenExpressionRef operandExpr) { + auto* expression = (Expression*)expr; + assert(expression->is<CallRef>()); + assert(index < static_cast<CallRef*>(expression)->operands.size()); + assert(operandExpr); + static_cast<CallRef*>(expression)->operands[index] = (Expression*)operandExpr; +} +BinaryenIndex BinaryenCallRefAppendOperand(BinaryenExpressionRef expr, + BinaryenExpressionRef operandExpr) { + auto* expression = (Expression*)expr; + assert(expression->is<CallRef>()); + assert(operandExpr); + auto& list = static_cast<CallRef*>(expression)->operands; + auto index = list.size(); + list.push_back((Expression*)operandExpr); + return index; +} +void BinaryenCallRefInsertOperandAt(BinaryenExpressionRef expr, + BinaryenIndex index, + BinaryenExpressionRef operandExpr) { + auto* expression = (Expression*)expr; + assert(expression->is<CallRef>()); + assert(operandExpr); + static_cast<CallRef*>(expression) + ->operands.insertAt(index, (Expression*)operandExpr); +} +BinaryenExpressionRef BinaryenCallRefRemoveOperandAt(BinaryenExpressionRef expr, + BinaryenIndex index) { + auto* expression = (Expression*)expr; + assert(expression->is<CallRef>()); + return static_cast<CallRef*>(expression)->operands.removeAt(index); +} +BinaryenExpressionRef BinaryenCallRefGetTarget(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<CallRef>()); + return static_cast<CallRef*>(expression)->target; +} +void BinaryenCallRefSetTarget(BinaryenExpressionRef expr, + BinaryenExpressionRef targetExpr) { + auto* expression = (Expression*)expr; + assert(expression->is<CallRef>()); + assert(targetExpr); + static_cast<CallRef*>(expression)->target = (Expression*)targetExpr; +} +bool BinaryenCallRefIsReturn(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<CallRef>()); + return static_cast<CallRef*>(expression)->isReturn; +} +void BinaryenCallRefSetReturn(BinaryenExpressionRef expr, bool isReturn) { + auto* expression = (Expression*)expr; + assert(expression->is<CallRef>()); + static_cast<CallRef*>(expression)->isReturn = isReturn; +} +// RefTest +BinaryenExpressionRef BinaryenRefTestGetRef(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<RefTest>()); + return static_cast<RefTest*>(expression)->ref; +} +void BinaryenRefTestSetRef(BinaryenExpressionRef expr, + BinaryenExpressionRef refExpr) { + auto* expression = (Expression*)expr; + assert(expression->is<RefTest>()); + assert(refExpr); + static_cast<RefTest*>(expression)->ref = (Expression*)refExpr; +} +BinaryenHeapType BinaryenRefTestGetIntendedType(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<RefTest>()); + return static_cast<RefTest*>(expression)->intendedType.getID(); +} +void BinaryenRefTestSetIntendedType(BinaryenExpressionRef expr, + BinaryenHeapType intendedType) { + auto* expression = (Expression*)expr; + assert(expression->is<RefTest>()); + static_cast<RefTest*>(expression)->intendedType = HeapType(intendedType); +} +// RefCast +BinaryenExpressionRef BinaryenRefCastGetRef(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<RefCast>()); + return static_cast<RefCast*>(expression)->ref; +} +void BinaryenRefCastSetRef(BinaryenExpressionRef expr, + BinaryenExpressionRef refExpr) { + auto* expression = (Expression*)expr; + assert(expression->is<RefCast>()); + assert(refExpr); + static_cast<RefCast*>(expression)->ref = (Expression*)refExpr; +} +BinaryenHeapType BinaryenRefCastGetIntendedType(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<RefCast>()); + return static_cast<RefCast*>(expression)->intendedType.getID(); +} +void BinaryenRefCastSetIntendedType(BinaryenExpressionRef expr, + BinaryenHeapType intendedType) { + auto* expression = (Expression*)expr; + assert(expression->is<RefCast>()); + static_cast<RefCast*>(expression)->intendedType = HeapType(intendedType); +} +// BrOn +BinaryenOp BinaryenBrOnGetOp(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<BrOn>()); + return static_cast<BrOn*>(expression)->op; +} +void BinaryenBrOnSetOp(BinaryenExpressionRef expr, BinaryenOp op) { + auto* expression = (Expression*)expr; + assert(expression->is<BrOn>()); + static_cast<BrOn*>(expression)->op = BrOnOp(op); +} +const char* BinaryenBrOnGetName(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<BrOn>()); + return static_cast<BrOn*>(expression)->name.c_str(); +} +void BinaryenBrOnSetName(BinaryenExpressionRef expr, const char* nameStr) { + auto* expression = (Expression*)expr; + assert(expression->is<BrOn>()); + assert(nameStr); + static_cast<BrOn*>(expression)->name = nameStr; +} +BinaryenExpressionRef BinaryenBrOnGetRef(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<BrOn>()); + return static_cast<BrOn*>(expression)->ref; +} +void BinaryenBrOnSetRef(BinaryenExpressionRef expr, + BinaryenExpressionRef refExpr) { + auto* expression = (Expression*)expr; + assert(expression->is<BrOn>()); + assert(refExpr); + static_cast<BrOn*>(expression)->ref = (Expression*)refExpr; +} +BinaryenHeapType BinaryenBrOnGetIntendedType(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<BrOn>()); + return static_cast<BrOn*>(expression)->intendedType.getID(); +} +void BinaryenBrOnSetIntendedType(BinaryenExpressionRef expr, + BinaryenHeapType intendedType) { + auto* expression = (Expression*)expr; + assert(expression->is<BrOn>()); + static_cast<BrOn*>(expression)->intendedType = HeapType(intendedType); +} +// StructNew +BinaryenIndex BinaryenStructNewGetNumOperands(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<StructNew>()); + return static_cast<StructNew*>(expression)->operands.size(); +} +BinaryenExpressionRef BinaryenStructNewGetOperandAt(BinaryenExpressionRef expr, + BinaryenIndex index) { + auto* expression = (Expression*)expr; + assert(expression->is<StructNew>()); + assert(index < static_cast<StructNew*>(expression)->operands.size()); + return static_cast<StructNew*>(expression)->operands[index]; +} +void BinaryenStructNewSetOperandAt(BinaryenExpressionRef expr, + BinaryenIndex index, + BinaryenExpressionRef operandExpr) { + auto* expression = (Expression*)expr; + assert(expression->is<StructNew>()); + assert(index < static_cast<StructNew*>(expression)->operands.size()); + assert(operandExpr); + static_cast<StructNew*>(expression)->operands[index] = + (Expression*)operandExpr; +} +BinaryenIndex +BinaryenStructNewAppendOperand(BinaryenExpressionRef expr, + BinaryenExpressionRef operandExpr) { + auto* expression = (Expression*)expr; + assert(expression->is<StructNew>()); + assert(operandExpr); + auto& list = static_cast<StructNew*>(expression)->operands; + auto index = list.size(); + list.push_back((Expression*)operandExpr); + return index; +} +void BinaryenStructNewInsertOperandAt(BinaryenExpressionRef expr, + BinaryenIndex index, + BinaryenExpressionRef operandExpr) { + auto* expression = (Expression*)expr; + assert(expression->is<StructNew>()); + assert(operandExpr); + static_cast<StructNew*>(expression) + ->operands.insertAt(index, (Expression*)operandExpr); +} +BinaryenExpressionRef +BinaryenStructNewRemoveOperandAt(BinaryenExpressionRef expr, + BinaryenIndex index) { + auto* expression = (Expression*)expr; + assert(expression->is<StructNew>()); + return static_cast<StructNew*>(expression)->operands.removeAt(index); +} +// StructGet +BinaryenIndex BinaryenStructGetGetIndex(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<StructGet>()); + return static_cast<StructGet*>(expression)->index; +} +void BinaryenStructGetSetIndex(BinaryenExpressionRef expr, + BinaryenIndex index) { + auto* expression = (Expression*)expr; + assert(expression->is<StructGet>()); + static_cast<StructGet*>(expression)->index = index; +} +BinaryenExpressionRef BinaryenStructGetGetRef(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<StructGet>()); + return static_cast<StructGet*>(expression)->ref; +} +void BinaryenStructGetSetRef(BinaryenExpressionRef expr, + BinaryenExpressionRef refExpr) { + auto* expression = (Expression*)expr; + assert(expression->is<StructGet>()); + assert(refExpr); + static_cast<StructGet*>(expression)->ref = (Expression*)refExpr; +} +bool BinaryenStructGetIsSigned(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<StructGet>()); + return static_cast<StructGet*>(expression)->signed_; +} +void BinaryenStructGetSetSigned(BinaryenExpressionRef expr, bool signed_) { + auto* expression = (Expression*)expr; + assert(expression->is<StructGet>()); + static_cast<StructGet*>(expression)->signed_ = signed_; +} +// StructSet +BinaryenIndex BinaryenStructSetGetIndex(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<StructSet>()); + return static_cast<StructSet*>(expression)->index; +} +void BinaryenStructSetSetIndex(BinaryenExpressionRef expr, + BinaryenIndex index) { + auto* expression = (Expression*)expr; + assert(expression->is<StructSet>()); + static_cast<StructSet*>(expression)->index = index; +} +BinaryenExpressionRef BinaryenStructSetGetRef(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<StructSet>()); + return static_cast<StructSet*>(expression)->ref; +} +void BinaryenStructSetSetRef(BinaryenExpressionRef expr, + BinaryenExpressionRef refExpr) { + auto* expression = (Expression*)expr; + assert(expression->is<StructSet>()); + assert(refExpr); + static_cast<StructSet*>(expression)->ref = (Expression*)refExpr; +} +BinaryenExpressionRef BinaryenStructSetGetValue(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<StructSet>()); + return static_cast<StructSet*>(expression)->value; +} +void BinaryenStructSetSetValue(BinaryenExpressionRef expr, + BinaryenExpressionRef valueExpr) { + auto* expression = (Expression*)expr; + assert(expression->is<StructSet>()); + assert(valueExpr); + static_cast<StructSet*>(expression)->value = (Expression*)valueExpr; +} +// ArrayNew +BinaryenExpressionRef BinaryenArrayNewGetInit(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<ArrayNew>()); + return static_cast<ArrayNew*>(expression)->init; +} +void BinaryenArrayNewSetInit(BinaryenExpressionRef expr, + BinaryenExpressionRef initExpr) { + auto* expression = (Expression*)expr; + assert(expression->is<ArrayNew>()); + // may be null + static_cast<ArrayNew*>(expression)->init = (Expression*)initExpr; +} +BinaryenExpressionRef BinaryenArrayNewGetSize(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<ArrayNew>()); + return static_cast<ArrayNew*>(expression)->size; +} +void BinaryenArrayNewSetSize(BinaryenExpressionRef expr, + BinaryenExpressionRef sizeExpr) { + auto* expression = (Expression*)expr; + assert(expression->is<ArrayNew>()); + assert(sizeExpr); + static_cast<ArrayNew*>(expression)->size = (Expression*)sizeExpr; +} +// ArrayInit +BinaryenIndex BinaryenArrayInitGetNumValues(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<ArrayInit>()); + return static_cast<ArrayInit*>(expression)->values.size(); +} +BinaryenExpressionRef BinaryenArrayInitGetValueAt(BinaryenExpressionRef expr, + BinaryenIndex index) { + auto* expression = (Expression*)expr; + assert(expression->is<ArrayInit>()); + assert(index < static_cast<ArrayInit*>(expression)->values.size()); + return static_cast<ArrayInit*>(expression)->values[index]; +} +void BinaryenArrayInitSetValueAt(BinaryenExpressionRef expr, + BinaryenIndex index, + BinaryenExpressionRef valueExpr) { + auto* expression = (Expression*)expr; + assert(expression->is<ArrayInit>()); + assert(index < static_cast<ArrayInit*>(expression)->values.size()); + assert(valueExpr); + static_cast<ArrayInit*>(expression)->values[index] = (Expression*)valueExpr; +} +BinaryenIndex BinaryenArrayInitAppendValue(BinaryenExpressionRef expr, + BinaryenExpressionRef valueExpr) { + auto* expression = (Expression*)expr; + assert(expression->is<ArrayInit>()); + assert(valueExpr); + auto& list = static_cast<ArrayInit*>(expression)->values; + auto index = list.size(); + list.push_back((Expression*)valueExpr); + return index; +} +void BinaryenArrayInitInsertValueAt(BinaryenExpressionRef expr, + BinaryenIndex index, + BinaryenExpressionRef valueExpr) { + auto* expression = (Expression*)expr; + assert(expression->is<ArrayInit>()); + assert(valueExpr); + static_cast<ArrayInit*>(expression) + ->values.insertAt(index, (Expression*)valueExpr); +} +BinaryenExpressionRef BinaryenArrayInitRemoveValueAt(BinaryenExpressionRef expr, + BinaryenIndex index) { + auto* expression = (Expression*)expr; + assert(expression->is<ArrayInit>()); + return static_cast<ArrayInit*>(expression)->values.removeAt(index); +} +// ArrayGet +BinaryenExpressionRef BinaryenArrayGetGetRef(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<ArrayGet>()); + return static_cast<ArrayGet*>(expression)->ref; +} +void BinaryenArrayGetSetRef(BinaryenExpressionRef expr, + BinaryenExpressionRef refExpr) { + auto* expression = (Expression*)expr; + assert(expression->is<ArrayGet>()); + assert(refExpr); + static_cast<ArrayGet*>(expression)->ref = (Expression*)refExpr; +} +BinaryenExpressionRef BinaryenArrayGetGetIndex(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<ArrayGet>()); + return static_cast<ArrayGet*>(expression)->index; +} +void BinaryenArrayGetSetIndex(BinaryenExpressionRef expr, + BinaryenExpressionRef indexExpr) { + auto* expression = (Expression*)expr; + assert(expression->is<ArrayGet>()); + assert(indexExpr); + static_cast<ArrayGet*>(expression)->index = (Expression*)indexExpr; +} +bool BinaryenArrayGetIsSigned(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<ArrayGet>()); + return static_cast<ArrayGet*>(expression)->signed_; +} +void BinaryenArrayGetSetSigned(BinaryenExpressionRef expr, bool signed_) { + auto* expression = (Expression*)expr; + assert(expression->is<ArrayGet>()); + static_cast<ArrayGet*>(expression)->signed_ = signed_; +} +// ArraySet +BinaryenExpressionRef BinaryenArraySetGetRef(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<ArraySet>()); + return static_cast<ArraySet*>(expression)->ref; +} +void BinaryenArraySetSetRef(BinaryenExpressionRef expr, + BinaryenExpressionRef refExpr) { + auto* expression = (Expression*)expr; + assert(expression->is<ArraySet>()); + assert(refExpr); + static_cast<ArraySet*>(expression)->ref = (Expression*)refExpr; +} +BinaryenExpressionRef BinaryenArraySetGetIndex(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<ArraySet>()); + return static_cast<ArraySet*>(expression)->index; +} +void BinaryenArraySetSetIndex(BinaryenExpressionRef expr, + BinaryenExpressionRef indexExpr) { + auto* expression = (Expression*)expr; + assert(expression->is<ArraySet>()); + assert(indexExpr); + static_cast<ArraySet*>(expression)->index = (Expression*)indexExpr; +} +BinaryenExpressionRef BinaryenArraySetGetValue(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<ArraySet>()); + return static_cast<ArraySet*>(expression)->value; +} +void BinaryenArraySetSetValue(BinaryenExpressionRef expr, + BinaryenExpressionRef valueExpr) { + auto* expression = (Expression*)expr; + assert(expression->is<ArraySet>()); + assert(valueExpr); + static_cast<ArraySet*>(expression)->value = (Expression*)valueExpr; +} +// ArrayLen +BinaryenExpressionRef BinaryenArrayLenGetRef(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<ArrayLen>()); + return static_cast<ArrayLen*>(expression)->ref; +} +void BinaryenArrayLenSetRef(BinaryenExpressionRef expr, + BinaryenExpressionRef refExpr) { + auto* expression = (Expression*)expr; + assert(expression->is<ArrayLen>()); + assert(refExpr); + static_cast<ArrayLen*>(expression)->ref = (Expression*)refExpr; +} +// ArrayCopy +BinaryenExpressionRef BinaryenArrayCopyGetDestRef(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<ArrayCopy>()); + return static_cast<ArrayCopy*>(expression)->destRef; +} +void BinaryenArrayCopySetDestRef(BinaryenExpressionRef expr, + BinaryenExpressionRef destRefExpr) { + auto* expression = (Expression*)expr; + assert(expression->is<ArrayCopy>()); + assert(destRefExpr); + static_cast<ArrayCopy*>(expression)->destRef = (Expression*)destRefExpr; +} +BinaryenExpressionRef +BinaryenArrayCopyGetDestIndex(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<ArrayCopy>()); + return static_cast<ArrayCopy*>(expression)->destIndex; +} +void BinaryenArrayCopySetDestIndex(BinaryenExpressionRef expr, + BinaryenExpressionRef destIndexExpr) { + auto* expression = (Expression*)expr; + assert(expression->is<ArrayCopy>()); + assert(destIndexExpr); + static_cast<ArrayCopy*>(expression)->destIndex = (Expression*)destIndexExpr; +} +BinaryenExpressionRef BinaryenArrayCopyGetSrcRef(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<ArrayCopy>()); + return static_cast<ArrayCopy*>(expression)->srcRef; +} +void BinaryenArrayCopySetSrcRef(BinaryenExpressionRef expr, + BinaryenExpressionRef srcRefExpr) { + auto* expression = (Expression*)expr; + assert(expression->is<ArrayCopy>()); + assert(srcRefExpr); + static_cast<ArrayCopy*>(expression)->srcRef = (Expression*)srcRefExpr; +} +BinaryenExpressionRef BinaryenArrayCopyGetSrcIndex(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<ArrayCopy>()); + return static_cast<ArrayCopy*>(expression)->srcIndex; +} +void BinaryenArrayCopySetSrcIndex(BinaryenExpressionRef expr, + BinaryenExpressionRef srcIndexExpr) { + auto* expression = (Expression*)expr; + assert(expression->is<ArrayCopy>()); + assert(srcIndexExpr); + static_cast<ArrayCopy*>(expression)->srcIndex = (Expression*)srcIndexExpr; +} +BinaryenExpressionRef BinaryenArrayCopyGetLength(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<ArrayCopy>()); + return static_cast<ArrayCopy*>(expression)->length; +} +void BinaryenArrayCopySetLength(BinaryenExpressionRef expr, + BinaryenExpressionRef lengthExpr) { + auto* expression = (Expression*)expr; + assert(expression->is<ArrayCopy>()); + assert(lengthExpr); + static_cast<ArrayCopy*>(expression)->length = (Expression*)lengthExpr; +} +// StringNew +BinaryenOp BinaryenStringNewGetOp(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<StringNew>()); + return static_cast<StringNew*>(expression)->op; +} +void BinaryenStringNewSetOp(BinaryenExpressionRef expr, BinaryenOp op) { + auto* expression = (Expression*)expr; + assert(expression->is<StringNew>()); + static_cast<StringNew*>(expression)->op = StringNewOp(op); +} +BinaryenExpressionRef BinaryenStringNewGetPtr(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<StringNew>()); + return static_cast<StringNew*>(expression)->ptr; +} +void BinaryenStringNewSetPtr(BinaryenExpressionRef expr, + BinaryenExpressionRef ptrExpr) { + auto* expression = (Expression*)expr; + assert(expression->is<StringNew>()); + assert(ptrExpr); + static_cast<StringNew*>(expression)->ptr = (Expression*)ptrExpr; +} +BinaryenExpressionRef BinaryenStringNewGetLength(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<StringNew>()); + return static_cast<StringNew*>(expression)->length; +} +void BinaryenStringNewSetLength(BinaryenExpressionRef expr, + BinaryenExpressionRef lengthExpr) { + auto* expression = (Expression*)expr; + assert(expression->is<StringNew>()); + // may be null (linear memory only) + static_cast<StringNew*>(expression)->length = (Expression*)lengthExpr; +} +BinaryenExpressionRef BinaryenStringNewGetStart(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<StringNew>()); + return static_cast<StringNew*>(expression)->start; +} +void BinaryenStringNewSetStart(BinaryenExpressionRef expr, + BinaryenExpressionRef startExpr) { + auto* expression = (Expression*)expr; + assert(expression->is<StringNew>()); + // may be null (GC only) + static_cast<StringNew*>(expression)->start = (Expression*)startExpr; +} +BinaryenExpressionRef BinaryenStringNewGetEnd(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<StringNew>()); + return static_cast<StringNew*>(expression)->end; +} +void BinaryenStringNewSetEnd(BinaryenExpressionRef expr, + BinaryenExpressionRef endExpr) { + auto* expression = (Expression*)expr; + assert(expression->is<StringNew>()); + // may be null (GC only) + static_cast<StringNew*>(expression)->end = (Expression*)endExpr; +} +// StringConst +const char* BinaryenStringConstGetString(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<StringConst>()); + return static_cast<StringConst*>(expression)->string.c_str(); +} +void BinaryenStringConstSetString(BinaryenExpressionRef expr, + const char* stringStr) { + auto* expression = (Expression*)expr; + assert(expression->is<StringConst>()); + assert(stringStr); + static_cast<StringConst*>(expression)->string = stringStr; +} +// StringMeasure +BinaryenOp BinaryenStringMeasureGetOp(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<StringMeasure>()); + return static_cast<StringMeasure*>(expression)->op; +} +void BinaryenStringMeasureSetOp(BinaryenExpressionRef expr, BinaryenOp op) { + auto* expression = (Expression*)expr; + assert(expression->is<StringMeasure>()); + static_cast<StringMeasure*>(expression)->op = StringMeasureOp(op); +} +BinaryenExpressionRef BinaryenStringMeasureGetRef(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<StringMeasure>()); + return static_cast<StringMeasure*>(expression)->ref; +} +void BinaryenStringMeasureSetRef(BinaryenExpressionRef expr, + BinaryenExpressionRef refExpr) { + auto* expression = (Expression*)expr; + assert(expression->is<StringMeasure>()); + assert(refExpr); + static_cast<StringMeasure*>(expression)->ref = (Expression*)refExpr; +} +// StringEncode +BinaryenOp BinaryenStringEncodeGetOp(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<StringEncode>()); + return static_cast<StringEncode*>(expression)->op; +} +void BinaryenStringEncodeSetOp(BinaryenExpressionRef expr, BinaryenOp op) { + auto* expression = (Expression*)expr; + assert(expression->is<StringEncode>()); + static_cast<StringEncode*>(expression)->op = StringEncodeOp(op); +} +BinaryenExpressionRef BinaryenStringEncodeGetRef(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<StringEncode>()); + return static_cast<StringEncode*>(expression)->ref; +} +void BinaryenStringEncodeSetRef(BinaryenExpressionRef expr, + BinaryenExpressionRef refExpr) { + auto* expression = (Expression*)expr; + assert(expression->is<StringEncode>()); + assert(refExpr); + static_cast<StringEncode*>(expression)->ref = (Expression*)refExpr; +} +BinaryenExpressionRef BinaryenStringEncodeGetPtr(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<StringEncode>()); + return static_cast<StringEncode*>(expression)->ptr; +} +void BinaryenStringEncodeSetPtr(BinaryenExpressionRef expr, + BinaryenExpressionRef ptrExpr) { + auto* expression = (Expression*)expr; + assert(expression->is<StringEncode>()); + assert(ptrExpr); + static_cast<StringEncode*>(expression)->ptr = (Expression*)ptrExpr; +} +BinaryenExpressionRef BinaryenStringEncodeGetStart(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<StringEncode>()); + return static_cast<StringEncode*>(expression)->start; +} +void BinaryenStringEncodeSetStart(BinaryenExpressionRef expr, + BinaryenExpressionRef startExpr) { + auto* expression = (Expression*)expr; + assert(expression->is<StringEncode>()); + // may be null (GC only) + static_cast<StringEncode*>(expression)->start = (Expression*)startExpr; +} +// StringConcat +BinaryenExpressionRef BinaryenStringConcatGetLeft(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<StringConcat>()); + return static_cast<StringConcat*>(expression)->left; +} +void BinaryenStringConcatSetLeft(BinaryenExpressionRef expr, + BinaryenExpressionRef leftExpr) { + auto* expression = (Expression*)expr; + assert(expression->is<StringConcat>()); + assert(leftExpr); + static_cast<StringConcat*>(expression)->left = (Expression*)leftExpr; +} +BinaryenExpressionRef BinaryenStringConcatGetRight(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<StringConcat>()); + return static_cast<StringConcat*>(expression)->right; +} +void BinaryenStringConcatSetRight(BinaryenExpressionRef expr, + BinaryenExpressionRef rightExpr) { + auto* expression = (Expression*)expr; + assert(expression->is<StringConcat>()); + assert(rightExpr); + static_cast<StringConcat*>(expression)->right = (Expression*)rightExpr; +} +// StringEq +BinaryenExpressionRef BinaryenStringEqGetLeft(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<StringEq>()); + return static_cast<StringEq*>(expression)->left; +} +void BinaryenStringEqSetLeft(BinaryenExpressionRef expr, + BinaryenExpressionRef leftExpr) { + auto* expression = (Expression*)expr; + assert(expression->is<StringEq>()); + assert(leftExpr); + static_cast<StringEq*>(expression)->left = (Expression*)leftExpr; +} +BinaryenExpressionRef BinaryenStringEqGetRight(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<StringEq>()); + return static_cast<StringEq*>(expression)->right; +} +void BinaryenStringEqSetRight(BinaryenExpressionRef expr, + BinaryenExpressionRef rightExpr) { + auto* expression = (Expression*)expr; + assert(expression->is<StringEq>()); + assert(rightExpr); + static_cast<StringEq*>(expression)->right = (Expression*)rightExpr; +} +// StringAs +BinaryenOp BinaryenStringAsGetOp(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<StringAs>()); + return static_cast<StringAs*>(expression)->op; +} +void BinaryenStringAsSetOp(BinaryenExpressionRef expr, BinaryenOp op) { + auto* expression = (Expression*)expr; + assert(expression->is<StringAs>()); + static_cast<StringAs*>(expression)->op = StringAsOp(op); +} +BinaryenExpressionRef BinaryenStringAsGetRef(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<StringAs>()); + return static_cast<StringAs*>(expression)->ref; +} +void BinaryenStringAsSetRef(BinaryenExpressionRef expr, + BinaryenExpressionRef refExpr) { + auto* expression = (Expression*)expr; + assert(expression->is<StringAs>()); + assert(refExpr); + static_cast<StringAs*>(expression)->ref = (Expression*)refExpr; +} +// StringWTF8Advance +BinaryenExpressionRef +BinaryenStringWTF8AdvanceGetRef(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<StringWTF8Advance>()); + return static_cast<StringWTF8Advance*>(expression)->ref; +} +void BinaryenStringWTF8AdvanceSetRef(BinaryenExpressionRef expr, + BinaryenExpressionRef refExpr) { + auto* expression = (Expression*)expr; + assert(expression->is<StringWTF8Advance>()); + assert(refExpr); + static_cast<StringWTF8Advance*>(expression)->ref = (Expression*)refExpr; +} +BinaryenExpressionRef +BinaryenStringWTF8AdvanceGetPos(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<StringWTF8Advance>()); + return static_cast<StringWTF8Advance*>(expression)->pos; +} +void BinaryenStringWTF8AdvanceSetPos(BinaryenExpressionRef expr, + BinaryenExpressionRef posExpr) { + auto* expression = (Expression*)expr; + assert(expression->is<StringWTF8Advance>()); + assert(posExpr); + static_cast<StringWTF8Advance*>(expression)->pos = (Expression*)posExpr; +} +BinaryenExpressionRef +BinaryenStringWTF8AdvanceGetBytes(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<StringWTF8Advance>()); + return static_cast<StringWTF8Advance*>(expression)->bytes; +} +void BinaryenStringWTF8AdvanceSetBytes(BinaryenExpressionRef expr, + BinaryenExpressionRef bytesExpr) { + auto* expression = (Expression*)expr; + assert(expression->is<StringWTF8Advance>()); + assert(bytesExpr); + static_cast<StringWTF8Advance*>(expression)->bytes = (Expression*)bytesExpr; +} +// StringWTF16Get +BinaryenExpressionRef BinaryenStringWTF16GetGetRef(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<StringWTF16Get>()); + return static_cast<StringWTF16Get*>(expression)->ref; +} +void BinaryenStringWTF16GetSetRef(BinaryenExpressionRef expr, + BinaryenExpressionRef refExpr) { + auto* expression = (Expression*)expr; + assert(expression->is<StringWTF16Get>()); + assert(refExpr); + static_cast<StringWTF16Get*>(expression)->ref = (Expression*)refExpr; +} +BinaryenExpressionRef BinaryenStringWTF16GetGetPos(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<StringWTF16Get>()); + return static_cast<StringWTF16Get*>(expression)->pos; +} +void BinaryenStringWTF16GetSetPos(BinaryenExpressionRef expr, + BinaryenExpressionRef posExpr) { + auto* expression = (Expression*)expr; + assert(expression->is<StringWTF16Get>()); + assert(posExpr); + static_cast<StringWTF16Get*>(expression)->pos = (Expression*)posExpr; +} +// StringIterNext +BinaryenExpressionRef BinaryenStringIterNextGetRef(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<StringIterNext>()); + return static_cast<StringIterNext*>(expression)->ref; +} +void BinaryenStringIterNextSetRef(BinaryenExpressionRef expr, + BinaryenExpressionRef refExpr) { + auto* expression = (Expression*)expr; + assert(expression->is<StringIterNext>()); + assert(refExpr); + static_cast<StringIterNext*>(expression)->ref = (Expression*)refExpr; +} +// StringIterMove +BinaryenOp BinaryenStringIterMoveGetOp(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<StringIterMove>()); + return static_cast<StringIterMove*>(expression)->op; +} +void BinaryenStringIterMoveSetOp(BinaryenExpressionRef expr, BinaryenOp op) { + auto* expression = (Expression*)expr; + assert(expression->is<StringIterMove>()); + static_cast<StringIterMove*>(expression)->op = StringIterMoveOp(op); +} +BinaryenExpressionRef BinaryenStringIterMoveGetRef(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<StringIterMove>()); + return static_cast<StringIterMove*>(expression)->ref; +} +void BinaryenStringIterMoveSetRef(BinaryenExpressionRef expr, + BinaryenExpressionRef refExpr) { + auto* expression = (Expression*)expr; + assert(expression->is<StringIterMove>()); + assert(refExpr); + static_cast<StringIterMove*>(expression)->ref = (Expression*)refExpr; +} +BinaryenExpressionRef BinaryenStringIterMoveGetNum(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<StringIterMove>()); + return static_cast<StringIterMove*>(expression)->num; +} +void BinaryenStringIterMoveSetNum(BinaryenExpressionRef expr, + BinaryenExpressionRef numExpr) { + auto* expression = (Expression*)expr; + assert(expression->is<StringIterMove>()); + assert(numExpr); + static_cast<StringIterMove*>(expression)->num = (Expression*)numExpr; +} +// StringSliceWTF +BinaryenOp BinaryenStringSliceWTFGetOp(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<StringSliceWTF>()); + return static_cast<StringSliceWTF*>(expression)->op; +} +void BinaryenStringSliceWTFSetOp(BinaryenExpressionRef expr, BinaryenOp op) { + auto* expression = (Expression*)expr; + assert(expression->is<StringSliceWTF>()); + static_cast<StringSliceWTF*>(expression)->op = StringSliceWTFOp(op); +} +BinaryenExpressionRef BinaryenStringSliceWTFGetRef(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<StringSliceWTF>()); + return static_cast<StringSliceWTF*>(expression)->ref; +} +void BinaryenStringSliceWTFSetRef(BinaryenExpressionRef expr, + BinaryenExpressionRef refExpr) { + auto* expression = (Expression*)expr; + assert(expression->is<StringSliceWTF>()); + assert(refExpr); + static_cast<StringSliceWTF*>(expression)->ref = (Expression*)refExpr; +} +BinaryenExpressionRef +BinaryenStringSliceWTFGetStart(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<StringSliceWTF>()); + return static_cast<StringSliceWTF*>(expression)->start; +} +void BinaryenStringSliceWTFSetStart(BinaryenExpressionRef expr, + BinaryenExpressionRef startExpr) { + auto* expression = (Expression*)expr; + assert(expression->is<StringSliceWTF>()); + assert(startExpr); + static_cast<StringSliceWTF*>(expression)->start = (Expression*)startExpr; +} +BinaryenExpressionRef BinaryenStringSliceWTFGetEnd(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<StringSliceWTF>()); + return static_cast<StringSliceWTF*>(expression)->end; +} +void BinaryenStringSliceWTFSetEnd(BinaryenExpressionRef expr, + BinaryenExpressionRef endExpr) { + auto* expression = (Expression*)expr; + assert(expression->is<StringSliceWTF>()); + assert(endExpr); + static_cast<StringSliceWTF*>(expression)->end = (Expression*)endExpr; +} +// StringSliceIter +BinaryenExpressionRef +BinaryenStringSliceIterGetRef(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<StringSliceIter>()); + return static_cast<StringSliceIter*>(expression)->ref; +} +void BinaryenStringSliceIterSetRef(BinaryenExpressionRef expr, + BinaryenExpressionRef refExpr) { + auto* expression = (Expression*)expr; + assert(expression->is<StringSliceIter>()); + assert(refExpr); + static_cast<StringSliceIter*>(expression)->ref = (Expression*)refExpr; +} +BinaryenExpressionRef +BinaryenStringSliceIterGetNum(BinaryenExpressionRef expr) { + auto* expression = (Expression*)expr; + assert(expression->is<StringSliceIter>()); + return static_cast<StringSliceIter*>(expression)->num; +} +void BinaryenStringSliceIterSetNum(BinaryenExpressionRef expr, + BinaryenExpressionRef numExpr) { + auto* expression = (Expression*)expr; + assert(expression->is<StringSliceIter>()); + assert(numExpr); + static_cast<StringSliceIter*>(expression)->num = (Expression*)numExpr; +} // Functions diff --git a/src/binaryen-c.h b/src/binaryen-c.h index d7555fc57..4366c2194 100644 --- a/src/binaryen-c.h +++ b/src/binaryen-c.h @@ -997,6 +997,13 @@ BINARYEN_API BinaryenExpressionRef BinaryenI31Get(BinaryenModuleRef module, BinaryenExpressionRef i31, bool signed_); BINARYEN_API BinaryenExpressionRef +BinaryenCallRef(BinaryenModuleRef module, + BinaryenExpressionRef target, + BinaryenExpressionRef* operands, + BinaryenIndex numOperands, + BinaryenType type, + bool isReturn); +BINARYEN_API BinaryenExpressionRef BinaryenRefTest(BinaryenModuleRef module, BinaryenExpressionRef ref, BinaryenHeapType intendedType); @@ -2285,6 +2292,378 @@ BINARYEN_API bool BinaryenI31GetIsSigned(BinaryenExpressionRef expr); BINARYEN_API void BinaryenI31GetSetSigned(BinaryenExpressionRef expr, bool signed_); +// CallRef + +BINARYEN_API BinaryenIndex +BinaryenCallRefGetNumOperands(BinaryenExpressionRef expr); +BINARYEN_API BinaryenExpressionRef +BinaryenCallRefGetOperandAt(BinaryenExpressionRef expr, BinaryenIndex index); +BINARYEN_API void +BinaryenCallRefSetOperandAt(BinaryenExpressionRef expr, + BinaryenIndex index, + BinaryenExpressionRef operandExpr); +BINARYEN_API BinaryenIndex BinaryenCallRefAppendOperand( + BinaryenExpressionRef expr, BinaryenExpressionRef operandExpr); +BINARYEN_API void +BinaryenCallRefInsertOperandAt(BinaryenExpressionRef expr, + BinaryenIndex index, + BinaryenExpressionRef operandExpr); +BINARYEN_API BinaryenExpressionRef +BinaryenCallRefRemoveOperandAt(BinaryenExpressionRef expr, BinaryenIndex index); +BINARYEN_API BinaryenExpressionRef +BinaryenCallRefGetTarget(BinaryenExpressionRef expr); +BINARYEN_API void BinaryenCallRefSetTarget(BinaryenExpressionRef expr, + BinaryenExpressionRef targetExpr); +BINARYEN_API bool BinaryenCallRefIsReturn(BinaryenExpressionRef expr); +BINARYEN_API void BinaryenCallRefSetReturn(BinaryenExpressionRef expr, + bool isReturn); + +// RefTest + +BINARYEN_API BinaryenExpressionRef +BinaryenRefTestGetRef(BinaryenExpressionRef expr); +BINARYEN_API void BinaryenRefTestSetRef(BinaryenExpressionRef expr, + BinaryenExpressionRef refExpr); +BINARYEN_API BinaryenHeapType +BinaryenRefTestGetIntendedType(BinaryenExpressionRef expr); +BINARYEN_API void BinaryenRefTestSetIntendedType(BinaryenExpressionRef expr, + BinaryenHeapType intendedType); + +// RefCast + +BINARYEN_API BinaryenExpressionRef +BinaryenRefCastGetRef(BinaryenExpressionRef expr); +BINARYEN_API void BinaryenRefCastSetRef(BinaryenExpressionRef expr, + BinaryenExpressionRef refExpr); +BINARYEN_API BinaryenHeapType +BinaryenRefCastGetIntendedType(BinaryenExpressionRef expr); +BINARYEN_API void BinaryenRefCastSetIntendedType(BinaryenExpressionRef expr, + BinaryenHeapType intendedType); + +// BrOn + +BINARYEN_API BinaryenOp BinaryenBrOnGetOp(BinaryenExpressionRef expr); +BINARYEN_API void BinaryenBrOnSetOp(BinaryenExpressionRef expr, BinaryenOp op); +BINARYEN_API const char* BinaryenBrOnGetName(BinaryenExpressionRef expr); +BINARYEN_API void BinaryenBrOnSetName(BinaryenExpressionRef expr, + const char* nameStr); +BINARYEN_API BinaryenExpressionRef +BinaryenBrOnGetRef(BinaryenExpressionRef expr); +BINARYEN_API void BinaryenBrOnSetRef(BinaryenExpressionRef expr, + BinaryenExpressionRef refExpr); +BINARYEN_API BinaryenHeapType +BinaryenBrOnGetIntendedType(BinaryenExpressionRef expr); +BINARYEN_API void BinaryenBrOnSetIntendedType(BinaryenExpressionRef expr, + BinaryenHeapType intendedType); + +// StructNew + +BINARYEN_API BinaryenIndex +BinaryenStructNewGetNumOperands(BinaryenExpressionRef expr); +BINARYEN_API BinaryenExpressionRef +BinaryenStructNewGetOperandAt(BinaryenExpressionRef expr, BinaryenIndex index); +BINARYEN_API void +BinaryenStructNewSetOperandAt(BinaryenExpressionRef expr, + BinaryenIndex index, + BinaryenExpressionRef operandExpr); +BINARYEN_API BinaryenIndex BinaryenStructNewAppendOperand( + BinaryenExpressionRef expr, BinaryenExpressionRef operandExpr); +BINARYEN_API void +BinaryenStructNewInsertOperandAt(BinaryenExpressionRef expr, + BinaryenIndex index, + BinaryenExpressionRef operandExpr); +BINARYEN_API BinaryenExpressionRef BinaryenStructNewRemoveOperandAt( + BinaryenExpressionRef expr, BinaryenIndex index); + +// StructGet + +BINARYEN_API BinaryenIndex +BinaryenStructGetGetIndex(BinaryenExpressionRef expr); +BINARYEN_API void BinaryenStructGetSetIndex(BinaryenExpressionRef expr, + BinaryenIndex index); +BINARYEN_API BinaryenExpressionRef +BinaryenStructGetGetRef(BinaryenExpressionRef expr); +BINARYEN_API void BinaryenStructGetSetRef(BinaryenExpressionRef expr, + BinaryenExpressionRef refExpr); +BINARYEN_API bool BinaryenStructGetIsSigned(BinaryenExpressionRef expr); +BINARYEN_API void BinaryenStructGetSetSigned(BinaryenExpressionRef expr, + bool signed_); + +// StructSet + +BINARYEN_API BinaryenIndex +BinaryenStructSetGetIndex(BinaryenExpressionRef expr); +BINARYEN_API void BinaryenStructSetSetIndex(BinaryenExpressionRef expr, + BinaryenIndex index); +BINARYEN_API BinaryenExpressionRef +BinaryenStructSetGetRef(BinaryenExpressionRef expr); +BINARYEN_API void BinaryenStructSetSetRef(BinaryenExpressionRef expr, + BinaryenExpressionRef refExpr); +BINARYEN_API BinaryenExpressionRef +BinaryenStructSetGetValue(BinaryenExpressionRef expr); +BINARYEN_API void BinaryenStructSetSetValue(BinaryenExpressionRef expr, + BinaryenExpressionRef valueExpr); + +// ArrayNew + +BINARYEN_API BinaryenExpressionRef +BinaryenArrayNewGetInit(BinaryenExpressionRef expr); +BINARYEN_API void BinaryenArrayNewSetInit(BinaryenExpressionRef expr, + BinaryenExpressionRef initExpr); +BINARYEN_API BinaryenExpressionRef +BinaryenArrayNewGetSize(BinaryenExpressionRef expr); +BINARYEN_API void BinaryenArrayNewSetSize(BinaryenExpressionRef expr, + BinaryenExpressionRef sizeExpr); + +// ArrayInit + +BINARYEN_API BinaryenIndex +BinaryenArrayInitGetNumValues(BinaryenExpressionRef expr); +BINARYEN_API BinaryenExpressionRef +BinaryenArrayInitGetValueAt(BinaryenExpressionRef expr, BinaryenIndex index); +BINARYEN_API void BinaryenArrayInitSetValueAt(BinaryenExpressionRef expr, + BinaryenIndex index, + BinaryenExpressionRef valueExpr); +BINARYEN_API BinaryenIndex BinaryenArrayInitAppendValue( + BinaryenExpressionRef expr, BinaryenExpressionRef valueExpr); +BINARYEN_API void +BinaryenArrayInitInsertValueAt(BinaryenExpressionRef expr, + BinaryenIndex index, + BinaryenExpressionRef valueExpr); +BINARYEN_API BinaryenExpressionRef +BinaryenArrayInitRemoveValueAt(BinaryenExpressionRef expr, BinaryenIndex index); + +// ArrayGet + +BINARYEN_API BinaryenExpressionRef +BinaryenArrayGetGetRef(BinaryenExpressionRef expr); +BINARYEN_API void BinaryenArrayGetSetRef(BinaryenExpressionRef expr, + BinaryenExpressionRef refExpr); +BINARYEN_API BinaryenExpressionRef +BinaryenArrayGetGetIndex(BinaryenExpressionRef expr); +BINARYEN_API void BinaryenArrayGetSetIndex(BinaryenExpressionRef expr, + BinaryenExpressionRef indexExpr); +BINARYEN_API bool BinaryenArrayGetIsSigned(BinaryenExpressionRef expr); +BINARYEN_API void BinaryenArrayGetSetSigned(BinaryenExpressionRef expr, + bool signed_); + +// ArraySet + +BINARYEN_API BinaryenExpressionRef +BinaryenArraySetGetRef(BinaryenExpressionRef expr); +BINARYEN_API void BinaryenArraySetSetRef(BinaryenExpressionRef expr, + BinaryenExpressionRef refExpr); +BINARYEN_API BinaryenExpressionRef +BinaryenArraySetGetIndex(BinaryenExpressionRef expr); +BINARYEN_API void BinaryenArraySetSetIndex(BinaryenExpressionRef expr, + BinaryenExpressionRef indexExpr); +BINARYEN_API BinaryenExpressionRef +BinaryenArraySetGetValue(BinaryenExpressionRef expr); +BINARYEN_API void BinaryenArraySetSetValue(BinaryenExpressionRef expr, + BinaryenExpressionRef valueExpr); + +// ArrayLen + +BINARYEN_API BinaryenExpressionRef +BinaryenArrayLenGetRef(BinaryenExpressionRef expr); +BINARYEN_API void BinaryenArrayLenSetRef(BinaryenExpressionRef expr, + BinaryenExpressionRef refExpr); + +// ArrayCopy + +BINARYEN_API BinaryenExpressionRef +BinaryenArrayCopyGetDestRef(BinaryenExpressionRef expr); +BINARYEN_API void +BinaryenArrayCopySetDestRef(BinaryenExpressionRef expr, + BinaryenExpressionRef destRefExpr); +BINARYEN_API BinaryenExpressionRef +BinaryenArrayCopyGetDestIndex(BinaryenExpressionRef expr); +BINARYEN_API void +BinaryenArrayCopySetDestIndex(BinaryenExpressionRef expr, + BinaryenExpressionRef destIndexExpr); +BINARYEN_API BinaryenExpressionRef +BinaryenArrayCopyGetSrcRef(BinaryenExpressionRef expr); +BINARYEN_API void BinaryenArrayCopySetSrcRef(BinaryenExpressionRef expr, + BinaryenExpressionRef srcRefExpr); +BINARYEN_API BinaryenExpressionRef +BinaryenArrayCopyGetSrcIndex(BinaryenExpressionRef expr); +BINARYEN_API void +BinaryenArrayCopySetSrcIndex(BinaryenExpressionRef expr, + BinaryenExpressionRef srcIndexExpr); +BINARYEN_API BinaryenExpressionRef +BinaryenArrayCopyGetLength(BinaryenExpressionRef expr); +BINARYEN_API void BinaryenArrayCopySetLength(BinaryenExpressionRef expr, + BinaryenExpressionRef lengthExpr); + +// StringNew + +BINARYEN_API BinaryenOp BinaryenStringNewGetOp(BinaryenExpressionRef expr); +BINARYEN_API void BinaryenStringNewSetOp(BinaryenExpressionRef expr, + BinaryenOp op); +BINARYEN_API BinaryenExpressionRef +BinaryenStringNewGetPtr(BinaryenExpressionRef expr); +BINARYEN_API void BinaryenStringNewSetPtr(BinaryenExpressionRef expr, + BinaryenExpressionRef ptrExpr); +BINARYEN_API BinaryenExpressionRef +BinaryenStringNewGetLength(BinaryenExpressionRef expr); +BINARYEN_API void BinaryenStringNewSetLength(BinaryenExpressionRef expr, + BinaryenExpressionRef lengthExpr); +BINARYEN_API BinaryenExpressionRef +BinaryenStringNewGetStart(BinaryenExpressionRef expr); +BINARYEN_API void BinaryenStringNewSetStart(BinaryenExpressionRef expr, + BinaryenExpressionRef startExpr); +BINARYEN_API BinaryenExpressionRef +BinaryenStringNewGetEnd(BinaryenExpressionRef expr); +BINARYEN_API void BinaryenStringNewSetEnd(BinaryenExpressionRef expr, + BinaryenExpressionRef endExpr); + +// StringConst + +BINARYEN_API const char* +BinaryenStringConstGetString(BinaryenExpressionRef expr); +BINARYEN_API void BinaryenStringConstSetString(BinaryenExpressionRef expr, + const char* stringStr); + +// StringMeasure + +BINARYEN_API BinaryenOp BinaryenStringMeasureGetOp(BinaryenExpressionRef expr); +BINARYEN_API void BinaryenStringMeasureSetOp(BinaryenExpressionRef expr, + BinaryenOp op); +BINARYEN_API BinaryenExpressionRef +BinaryenStringMeasureGetRef(BinaryenExpressionRef expr); +BINARYEN_API void BinaryenStringMeasureSetRef(BinaryenExpressionRef expr, + BinaryenExpressionRef refExpr); + +// StringEncode + +BINARYEN_API BinaryenOp BinaryenStringEncodeGetOp(BinaryenExpressionRef expr); +BINARYEN_API void BinaryenStringEncodeSetOp(BinaryenExpressionRef expr, + BinaryenOp op); +BINARYEN_API BinaryenExpressionRef +BinaryenStringEncodeGetRef(BinaryenExpressionRef expr); +BINARYEN_API void BinaryenStringEncodeSetRef(BinaryenExpressionRef expr, + BinaryenExpressionRef refExpr); +BINARYEN_API BinaryenExpressionRef +BinaryenStringEncodeGetPtr(BinaryenExpressionRef expr); +BINARYEN_API void BinaryenStringEncodeSetPtr(BinaryenExpressionRef expr, + BinaryenExpressionRef ptrExpr); +BINARYEN_API BinaryenExpressionRef +BinaryenStringEncodeGetStart(BinaryenExpressionRef expr); +BINARYEN_API void BinaryenStringEncodeSetStart(BinaryenExpressionRef expr, + BinaryenExpressionRef startExpr); + +// StringConcat + +BINARYEN_API BinaryenExpressionRef +BinaryenStringConcatGetLeft(BinaryenExpressionRef expr); +BINARYEN_API void BinaryenStringConcatSetLeft(BinaryenExpressionRef expr, + BinaryenExpressionRef leftExpr); +BINARYEN_API BinaryenExpressionRef +BinaryenStringConcatGetRight(BinaryenExpressionRef expr); +BINARYEN_API void BinaryenStringConcatSetRight(BinaryenExpressionRef expr, + BinaryenExpressionRef rightExpr); + +// StringEq + +BINARYEN_API BinaryenExpressionRef +BinaryenStringEqGetLeft(BinaryenExpressionRef expr); +BINARYEN_API void BinaryenStringEqSetLeft(BinaryenExpressionRef expr, + BinaryenExpressionRef leftExpr); +BINARYEN_API BinaryenExpressionRef +BinaryenStringEqGetRight(BinaryenExpressionRef expr); +BINARYEN_API void BinaryenStringEqSetRight(BinaryenExpressionRef expr, + BinaryenExpressionRef rightExpr); + +// StringAs + +BINARYEN_API BinaryenOp BinaryenStringAsGetOp(BinaryenExpressionRef expr); +BINARYEN_API void BinaryenStringAsSetOp(BinaryenExpressionRef expr, + BinaryenOp op); +BINARYEN_API BinaryenExpressionRef +BinaryenStringAsGetRef(BinaryenExpressionRef expr); +BINARYEN_API void BinaryenStringAsSetRef(BinaryenExpressionRef expr, + BinaryenExpressionRef refExpr); + +// StringWTF8Advance + +BINARYEN_API BinaryenExpressionRef +BinaryenStringWTF8AdvanceGetRef(BinaryenExpressionRef expr); +BINARYEN_API void +BinaryenStringWTF8AdvanceSetRef(BinaryenExpressionRef expr, + BinaryenExpressionRef refExpr); +BINARYEN_API BinaryenExpressionRef +BinaryenStringWTF8AdvanceGetPos(BinaryenExpressionRef expr); +BINARYEN_API void +BinaryenStringWTF8AdvanceSetPos(BinaryenExpressionRef expr, + BinaryenExpressionRef posExpr); +BINARYEN_API BinaryenExpressionRef +BinaryenStringWTF8AdvanceGetBytes(BinaryenExpressionRef expr); +BINARYEN_API void +BinaryenStringWTF8AdvanceSetBytes(BinaryenExpressionRef expr, + BinaryenExpressionRef bytesExpr); + +// StringWTF16Get + +BINARYEN_API BinaryenExpressionRef +BinaryenStringWTF16GetGetRef(BinaryenExpressionRef expr); +BINARYEN_API void BinaryenStringWTF16GetSetRef(BinaryenExpressionRef expr, + BinaryenExpressionRef refExpr); +BINARYEN_API BinaryenExpressionRef +BinaryenStringWTF16GetGetPos(BinaryenExpressionRef expr); +BINARYEN_API void BinaryenStringWTF16GetSetPos(BinaryenExpressionRef expr, + BinaryenExpressionRef posExpr); + +// StringIterNext + +BINARYEN_API BinaryenExpressionRef +BinaryenStringIterNextGetRef(BinaryenExpressionRef expr); +BINARYEN_API void BinaryenStringIterNextSetRef(BinaryenExpressionRef expr, + BinaryenExpressionRef refExpr); + +// StringIterMove + +BINARYEN_API BinaryenOp BinaryenStringIterMoveGetOp(BinaryenExpressionRef expr); +BINARYEN_API void BinaryenStringIterMoveSetOp(BinaryenExpressionRef expr, + BinaryenOp op); +BINARYEN_API BinaryenExpressionRef +BinaryenStringIterMoveGetRef(BinaryenExpressionRef expr); +BINARYEN_API void BinaryenStringIterMoveSetRef(BinaryenExpressionRef expr, + BinaryenExpressionRef refExpr); +BINARYEN_API BinaryenExpressionRef +BinaryenStringIterMoveGetNum(BinaryenExpressionRef expr); +BINARYEN_API void BinaryenStringIterMoveSetNum(BinaryenExpressionRef expr, + BinaryenExpressionRef numExpr); + +// StringSliceWTF + +BINARYEN_API BinaryenOp BinaryenStringSliceWTFGetOp(BinaryenExpressionRef expr); +BINARYEN_API void BinaryenStringSliceWTFSetOp(BinaryenExpressionRef expr, + BinaryenOp op); +BINARYEN_API BinaryenExpressionRef +BinaryenStringSliceWTFGetRef(BinaryenExpressionRef expr); +BINARYEN_API void BinaryenStringSliceWTFSetRef(BinaryenExpressionRef expr, + BinaryenExpressionRef refExpr); +BINARYEN_API BinaryenExpressionRef +BinaryenStringSliceWTFGetStart(BinaryenExpressionRef expr); +BINARYEN_API void +BinaryenStringSliceWTFSetStart(BinaryenExpressionRef expr, + BinaryenExpressionRef startExpr); +BINARYEN_API BinaryenExpressionRef +BinaryenStringSliceWTFGetEnd(BinaryenExpressionRef expr); +BINARYEN_API void BinaryenStringSliceWTFSetEnd(BinaryenExpressionRef expr, + BinaryenExpressionRef endExpr); + +// StringSliceIter + +BINARYEN_API BinaryenExpressionRef +BinaryenStringSliceIterGetRef(BinaryenExpressionRef expr); +BINARYEN_API void BinaryenStringSliceIterSetRef(BinaryenExpressionRef expr, + BinaryenExpressionRef refExpr); +BINARYEN_API BinaryenExpressionRef +BinaryenStringSliceIterGetNum(BinaryenExpressionRef expr); +BINARYEN_API void BinaryenStringSliceIterSetNum(BinaryenExpressionRef expr, + BinaryenExpressionRef numExpr); + // Functions BINARYEN_REF(Function); |