aboutsummaryrefslogtreecommitdiff
path: root/private_include/nw/routines.h
blob: 0baee655f6625f84c13b762cefb37f63f7b3726c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
/*
 * 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 ROUTINES_H
#define ROUTINES_H

#include <nanowasm/nw.h>

void nwp_check_magic(struct nw_mod *m);
void nwp_check_version(struct nw_mod *m);
void nwp_section(struct nw_mod *m);
void nwp_section_custom(struct nw_mod *m);
void nwp_section_type(struct nw_mod *m);
void nwp_section_import(struct nw_mod *m);
void nwp_section_function(struct nw_mod *m);
void nwp_section_table(struct nw_mod *m);
void nwp_section_memory(struct nw_mod *m);
void nwp_section_global(struct nw_mod *m);
void nwp_section_export(struct nw_mod *m);
void nwp_section_start(struct nw_mod *m);
void nwp_section_element(struct nw_mod *m);
void nwp_section_code(struct nw_mod *m);
void nwp_section_data(struct nw_mod *m);
void nwp_section_data_count(struct nw_mod *m);
void nwp_section_to(struct nw_mod *m);
void nwp_section_fti(struct nw_mod *m);
void nwp_section_fbo(struct nw_mod *m);
void nwp_section_lo(struct nw_mod *m);
void nwp_section_iti(struct nw_mod *m);
void nwp_section_skip(struct nw_mod *m);
enum nw_state nwp_section_exit(struct nw_mod *m);

void nwp_init_globals(struct nw_inst *i,
    enum nw_state (*next)(struct nw_inst *));
void nwp_init_data(struct nw_inst *i,
    enum nw_state (*next)(struct nw_inst *));

enum nw_state nwp_execute(struct nw_interp *i);
void nwp_find_export(struct nw_interp *i, const char *sym,
    enum nw_state (*next)(struct nw_interp *));
void nwp_call(struct nw_interp *i, nw_varuint32 index);
void nwp_call_function(struct nw_interp *i, nw_varuint32 index);
void nwp_call_import(struct nw_interp *i, nw_varuint32 index);
void nwp_find_function(struct nw_interp *i, const struct nw_fn *fn,
    void (*next)(struct nw_interp *));
void nwp_get_function_type(struct nw_interp *i, nw_varuint32 index,
    enum nw_state (*next)(struct nw_interp *));
void nwp_get_import_type(struct nw_interp *i, struct nw_get_import_type *t,
    nw_varuint32 index, enum nw_state (*next)(struct nw_interp *));
void nwp_mem_imm(struct nw_interp *i, void (*next)(struct nw_interp *));
void nwp_unwind(struct nw_interp *i);
void nwp_break(struct nw_interp *i, nw_varuint32 relative_depth,
    nw_varuint32 table_offset);
void nwp_find_param(struct nw_interp *i, struct nw_find_param *f,
    nw_varuint32 index, enum nw_state (*next)(struct nw_interp *), void *args);
void nwp_find_local(struct nw_interp *i, struct nw_find_local *f,
    nw_varuint32 index, enum nw_state (*next)(struct nw_interp *), void *args);
void nwp_set_local(struct nw_interp *i,
    enum nw_state (*next)(struct nw_interp *));
void nwp_arithm(struct nw_interp *i, enum nw_type t,
    int (*op)(const struct nw_i_sm_arithm_out *, union nw_value *));
void nwp_unary(struct nw_interp *i, enum nw_type t,
    int (*op)(const union nw_value *, union nw_value *));
void nwp_start_block(struct nw_interp *i, struct nw_i_sm_sb *sb,
    enum nw_state (*next)(struct nw_interp *));

#endif