/* * nanowasm, a tiny WebAssembly/Wasm interpreter * Copyright (C) 2023-2025 Xavier Del Campo Romero * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ #ifndef INTERP_H #define INTERP_H #include #include #include struct nwp_interp_set { const enum opcode *opcodes; size_t n; }; struct nwp_ops { void (*const *ops)(struct nw_interp *); size_t n; }; extern const struct nwp_interp_set nwp_interp_initexpr_set, nwp_interp_data_set; extern const struct nwp_ops nwp_ops; int nwp_interp_start(struct nw_interp *i, const struct nw_interp_cfg *cfg, const struct nwp_interp_set *set); void nwp_interp_resume(struct nw_interp *i); void nwp_interp_limited(struct nw_interp *i); void nwp_interp_full(struct nw_interp *i); enum nw_state nwp_interp_run(struct nw_interp *i); #endif