1#![warn(
4 missing_debug_implementations,
5 unreachable_pub,
6 clippy::missing_const_for_fn,
7 rustdoc::all
8)]
9#![cfg_attr(not(test), warn(unused_crate_dependencies))]
10#![deny(unused_must_use, rust_2018_idioms)]
11#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))]
12
13pub mod constants;
14pub mod error;
15pub mod parser;
16pub mod prelude;
17
18#[derive(Debug, PartialEq, Clone)]
19pub struct EOFContainer {
20 pub header: EOFHeader,
21 pub body: Body,
22}
23
24#[derive(Debug, PartialEq, Clone, Copy)]
25pub struct EOFHeader {
26 pub magic: [u8; 2],
27 pub version: u8,
28 pub kind_type: u8,
29 pub type_size: u16,
30 pub kind_code: u8,
31 pub num_code_sections: u16,
32 pub code_size: u16,
33 pub kind_container: u8,
34 pub num_container_sections: u16,
35 pub container_size: u8,
36 pub kind_data: u8,
37 pub data_size: u16,
38 pub terminator: u8,
39}
40
41#[derive(Debug, PartialEq, Clone)]
42pub struct Body {
43 pub types_section: Vec<TypeMetadata>,
44 pub inputs: u8,
45 pub outputs: u8,
46 pub max_stack_height: u16,
47 pub code_section: Vec<u8>,
48 pub container_section: Vec<u8>,
49 pub data_section: Vec<u8>,
50}
51
52#[derive(Debug, PartialEq, Clone)]
53pub struct TypesSection {
54 pub items: Vec<TypeMetadata>,
55}
56
57#[derive(Debug, PartialEq, Clone)]
58pub struct TypeMetadata {
59 pub inputs: u8,
60 pub outputs: u8,
61 pub max_stack_height: u16,
62}