using System; namespace Wasmtime { /// /// Represents the Wasmtime engine. /// public class Engine : IDisposable { /// /// Constructs a new . /// public Engine() { Handle = Interop.wasm_engine_new(); if (Handle.IsInvalid) { throw new WasmtimeException("Failed to create Wasmtime engine."); } } internal Engine(Interop.WasmConfigHandle config) { Handle = Interop.wasm_engine_new_with_config(config); config.SetHandleAsInvalid(); if (Handle.IsInvalid) { throw new WasmtimeException("Failed to create Wasmtime engine."); } } /// /// Creates a new Wasmtime . /// /// Returns the new . public Store CreateStore() { return new Store(this); } /// public void Dispose() { if (!Handle.IsInvalid) { Handle.Dispose(); Handle.SetHandleAsInvalid(); } } internal Interop.EngineHandle Handle { get; private set; } } }