Skip to content

src/runtime/binaryen/module/wasm_module_impl.hpp

Namespaces

Name
wasm
sgns
sgns::runtime
sgns::runtime::binaryen

Classes

Name
class sgns::runtime::binaryen::WasmModuleImpl

Functions

Name
OUTCOME_HPP_DECLARE_ERROR_2(sgns::runtime::binaryen , WasmModuleImpl::Error )

Functions Documentation

function OUTCOME_HPP_DECLARE_ERROR_2

OUTCOME_HPP_DECLARE_ERROR_2(
    sgns::runtime::binaryen ,
    WasmModuleImpl::Error 
)

Source code

#ifndef SUPERGENIUS_SRC_RUNTIME_BINARYEN_WASM_MODULE_IMPL
#define SUPERGENIUS_SRC_RUNTIME_BINARYEN_WASM_MODULE_IMPL

#include "base/buffer.hpp"
#include "runtime/binaryen/module/wasm_module.hpp"

namespace wasm {
  using namespace ::wasm;  // NOLINT(google-build-using-namespace)
  class Module;
}  // namespace wasm

namespace sgns::runtime::binaryen {

  class WasmModuleImpl final : public WasmModule {
   public:
    enum class Error { EMPTY_STATE_CODE = 1, INVALID_STATE_CODE };

    WasmModuleImpl(WasmModuleImpl&&) = default;
    WasmModuleImpl& operator=(WasmModuleImpl&&) = default;

    WasmModuleImpl(const WasmModuleImpl&) = delete;
    WasmModuleImpl& operator=(const WasmModuleImpl&) = delete;

    ~WasmModuleImpl() override = default;

    static outcome::result<std::unique_ptr<WasmModuleImpl>> createFromCode(
        const base::Buffer &code,
        const std::shared_ptr<RuntimeExternalInterface> &rei);

    std::unique_ptr<WasmModuleInstance> instantiate(
        const std::shared_ptr<RuntimeExternalInterface> &externalInterface)
        const override;

   private:
    explicit WasmModuleImpl(std::unique_ptr<wasm::Module> &&module);

    std::unique_ptr<wasm::Module> module_;
  };

}  // namespace sgns::runtime::binaryen

OUTCOME_HPP_DECLARE_ERROR_2(sgns::runtime::binaryen, WasmModuleImpl::Error);

#endif  // SUPERGENIUS_SRC_RUNTIME_BINARYEN_WASM_MODULE_IMPL

Updated on 2026-03-04 at 13:10:45 -0800