1*13ebd6f5SMangoPeachGrape #include <fstream> 2*13ebd6f5SMangoPeachGrape #include <iostream> 3*13ebd6f5SMangoPeachGrape #include <sstream> 4*13ebd6f5SMangoPeachGrape #include <wasmtime.hh> 5*13ebd6f5SMangoPeachGrape 6*13ebd6f5SMangoPeachGrape using namespace wasmtime; 7*13ebd6f5SMangoPeachGrape readFile(const char * name)8*13ebd6f5SMangoPeachGrapestd::string readFile(const char *name) { 9*13ebd6f5SMangoPeachGrape std::ifstream watFile; 10*13ebd6f5SMangoPeachGrape watFile.open(name); 11*13ebd6f5SMangoPeachGrape std::stringstream strStream; 12*13ebd6f5SMangoPeachGrape strStream << watFile.rdbuf(); 13*13ebd6f5SMangoPeachGrape return strStream.str(); 14*13ebd6f5SMangoPeachGrape } 15*13ebd6f5SMangoPeachGrape main()16*13ebd6f5SMangoPeachGrapeint main() { 17*13ebd6f5SMangoPeachGrape // Load our WebAssembly (parsed WAT in our case), and then load it into a 18*13ebd6f5SMangoPeachGrape // `Module` which is attached to a `Store`. After we've got that we 19*13ebd6f5SMangoPeachGrape // can instantiate it. 20*13ebd6f5SMangoPeachGrape Engine engine; 21*13ebd6f5SMangoPeachGrape Store store(engine); 22*13ebd6f5SMangoPeachGrape auto module = Module::compile(engine, readFile("examples/gcd.wat")).unwrap(); 23*13ebd6f5SMangoPeachGrape auto instance = Instance::create(store, module, {}).unwrap(); 24*13ebd6f5SMangoPeachGrape 25*13ebd6f5SMangoPeachGrape // Invoke `gcd` export 26*13ebd6f5SMangoPeachGrape auto gcd = std::get<Func>(*instance.get(store, "gcd")); 27*13ebd6f5SMangoPeachGrape auto results = gcd.call(store, {6, 27}).unwrap(); 28*13ebd6f5SMangoPeachGrape 29*13ebd6f5SMangoPeachGrape std::cout << "gcd(6, 27) = " << results[0].i32() << "\n"; 30*13ebd6f5SMangoPeachGrape } 31