#include "wasm-type.h"
#include "wasm.h"
namespace wasm {
inline std::string generateSpecWrapper(Module& wasm) {
std::string ret;
for (auto& exp : wasm.exports) {
auto* func = wasm.getFunctionOrNull(exp->value);
if (!func) {
continue; }
ret += std::string("(invoke \"") + exp->name.toString() + "\" ";
for (const auto& param : func->getParams()) {
TODO_SINGLE_COMPOUND(param);
switch (param.getBasic()) {
case Type::i32:
ret += "(i32.const 0)";
break;
case Type::i64:
ret += "(i64.const 0)";
break;
case Type::f32:
ret += "(f32.const 0)";
break;
case Type::f64:
ret += "(f64.const 0)";
break;
case Type::v128:
ret += "(v128.const i32x4 0 0 0 0)";
break;
case Type::none:
case Type::unreachable:
WASM_UNREACHABLE("unexpected type");
}
ret += " ";
}
ret += ") ";
}
return ret;
}
}