diff options
Diffstat (limited to 'src/binaryen-c.cpp')
-rw-r--r-- | src/binaryen-c.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/binaryen-c.cpp b/src/binaryen-c.cpp index a876c998b..d46125bb3 100644 --- a/src/binaryen-c.cpp +++ b/src/binaryen-c.cpp @@ -21,6 +21,7 @@ #include "binaryen-c.h" #include "pass.h" #include "wasm.h" +#include "wasm-binary.h" #include "wasm-builder.h" #include "wasm-printing.h" #include "wasm-validator.h" @@ -398,6 +399,26 @@ void BinaryenModuleOptimize(BinaryenModuleRef module) { passRunner.run(); } +size_t BinaryenModuleWrite(BinaryenModuleRef module, char* output, size_t outputSize) { + Module* wasm = (Module*)module; + BufferWithRandomAccess buffer(false); + WasmBinaryWriter writer(wasm, buffer, false); + writer.write(); + size_t bytes = std::min(buffer.size(), outputSize); + std::copy_n(buffer.begin(), bytes, output); + return bytes; +} + +BinaryenModuleRef BinaryenModuleRead(char* input, size_t inputSize) { + auto* wasm = new Module; + std::vector<char> buffer(false); + buffer.resize(inputSize); + std::copy_n(input, inputSize, buffer.begin()); + WasmBinaryBuilder parser(*wasm, buffer, false); + parser.read(); + return wasm; +} + // // ========== CFG / Relooper ========== // |