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.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/binaryen-c.cpp b/src/binaryen-c.cpp
index 8cbb969d6..f9a778a68 100644
--- a/src/binaryen-c.cpp
+++ b/src/binaryen-c.cpp
@@ -5525,6 +5525,25 @@ void BinaryenCopyMemorySegmentData(BinaryenModuleRef module,
}
std::copy(segment->data.cbegin(), segment->data.cend(), buffer);
}
+void BinaryenAddDataSegment(BinaryenModuleRef module,
+ const char* segmentName,
+ const char* memoryName,
+ bool segmentPassive,
+ BinaryenExpressionRef segmentOffset,
+ const char* segmentData,
+ BinaryenIndex segmentSize) {
+ auto* wasm = (Module*)module;
+ auto name =
+ segmentName ? Name(segmentName) : Name::fromInt(wasm->dataSegments.size());
+ auto curr = Builder::makeDataSegment(name,
+ memoryName ? memoryName : "0",
+ segmentPassive,
+ (Expression*)segmentOffset,
+ segmentData,
+ segmentSize);
+ curr->hasExplicitName = segmentName ? true : false;
+ wasm->addDataSegment(std::move(curr));
+}
// Start function. One per module