#ifndef __WASM_HH
#define __WASM_HH
#include <cassert>
#include <cstddef>
#include <cstdint>
#include <cstring>
#include <memory>
#include <limits>
#include <string>
static_assert …;
static_assert …;
static_assert …;
byte_t;
float32_t;
float64_t;
namespace wasm {
template<class T>
class vec { … };
own;
ownvec;
template<class T>
auto make_own(T* x) -> own<T> { … }
class Config { … };
class Engine { … };
class Store { … };
enum Mutability : uint8_t { … };
struct Limits { … };
enum ValKind : uint8_t { … };
inline bool is_num(ValKind k) { … }
inline bool is_ref(ValKind k) { … }
class ValType { … };
enum ExternKind : uint8_t { … };
class FuncType;
class GlobalType;
class TableType;
class MemoryType;
class ExternType { … };
class FuncType : public ExternType { … };
class GlobalType : public ExternType { … };
class TableType : public ExternType { … };
class MemoryType : public ExternType { … };
Name;
class ImportType { … };
class ExportType { … };
class Ref { … };
class Val { … };
template<> inline auto Val::make<int32_t>(int32_t x) -> Val { … }
template<> inline auto Val::make<int64_t>(int64_t x) -> Val { … }
template<> inline auto Val::make<float32_t>(float32_t x) -> Val { … }
template<> inline auto Val::make<float64_t>(float64_t x) -> Val { … }
template<> inline auto Val::make<Ref>(own<Ref>&& x) -> Val { … }
template<> inline auto Val::make<uint32_t>(uint32_t x) -> Val { … }
template<> inline auto Val::make<uint64_t>(uint64_t x) -> Val { … }
template<> inline auto Val::get<int32_t>() const -> int32_t { … }
template<> inline auto Val::get<int64_t>() const -> int64_t { … }
template<> inline auto Val::get<float32_t>() const -> float32_t { … }
template<> inline auto Val::get<float64_t>() const -> float64_t { … }
template<> inline auto Val::get<Ref*>() const -> Ref* { … }
template<> inline auto Val::get<uint32_t>() const -> uint32_t { … }
template<> inline auto Val::get<uint64_t>() const -> uint64_t { … }
Message;
class Instance;
class Frame { … };
class Trap : public Ref { … };
template<class T>
class Shared { … };
class Module : public Ref { … };
class Foreign : public Ref { … };
class Func;
class Global;
class Table;
class Memory;
class Extern : public Ref { … };
class Func : public Extern { … };
class Global : public Extern { … };
class Table : public Extern { … };
class Memory : public Extern { … };
class Instance : public Ref { … };
}
#endif