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.cpp37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/binaryen-c.cpp b/src/binaryen-c.cpp
index 990612829..fb8b730c7 100644
--- a/src/binaryen-c.cpp
+++ b/src/binaryen-c.cpp
@@ -35,6 +35,8 @@
#include "wasm-validator.h"
#include "wasm.h"
#include "wasm2js.h"
+#include <iostream>
+#include <sstream>
#ifdef __EMSCRIPTEN__
#include <emscripten.h>
@@ -3288,6 +3290,26 @@ BinaryenModuleWrite(BinaryenModuleRef module, char* output, size_t outputSize) {
.outputBytes;
}
+size_t BinaryenModuleWriteText(BinaryenModuleRef module,
+ char* output,
+ size_t outputSize) {
+
+ if (tracing) {
+ std::cout << " // BinaryenModuleWriteTextr\n";
+ }
+
+ // use a stringstream as an std::ostream. Extract the std::string
+ // representation, and then store in the output.
+ std::stringstream ss;
+ WasmPrinter::printModule((Module*)module, ss);
+
+ const auto temp = ss.str();
+ const auto ctemp = temp.c_str();
+
+ strncpy(output, ctemp, outputSize);
+ return std::min(outputSize, temp.size());
+}
+
BinaryenBufferSizes BinaryenModuleWriteWithSourceMap(BinaryenModuleRef module,
const char* url,
char* output,
@@ -3333,6 +3355,21 @@ BinaryenModuleAllocateAndWrite(BinaryenModuleRef module,
return {binary, buffer.size(), sourceMap};
}
+char* BinaryenModuleAllocateAndWriteText(BinaryenModuleRef* module) {
+ if (tracing) {
+ std::cout << " // BinaryenModuleAllocateAndWriteText(the_module);";
+ }
+
+ std::stringstream ss;
+ WasmPrinter::printModule((Module*)module, ss);
+
+ const std::string out = ss.str();
+ const int len = out.length() + 1;
+ char* cout = (char*)malloc(len);
+ strncpy(cout, out.c_str(), len);
+ return cout;
+}
+
BinaryenModuleRef BinaryenModuleRead(char* input, size_t inputSize) {
if (tracing) {
std::cout << " // BinaryenModuleRead\n";