Coverage Report

Created: 2024-10-16 07:58

/rust/registry/src/index.crates.io-6f17d22bba15001f/wasm-encoder-0.4.1/src/functions.rs
Line
Count
Source
1
use super::*;
2
3
/// An encoder for the function section.
4
///
5
/// # Example
6
///
7
/// ```
8
/// use wasm_encoder::{Module, FunctionSection, ValType};
9
///
10
/// let mut functions = FunctionSection::new();
11
/// let type_index = 0;
12
/// functions.function(type_index);
13
///
14
/// let mut module = Module::new();
15
/// module.section(&functions);
16
///
17
/// // Note: this will generate an invalid module because we didn't generate a
18
/// // code section containing the function body. See the documentation for
19
/// // `CodeSection` for details.
20
///
21
/// let wasm_bytes = module.finish();
22
/// ```
23
#[derive(Clone, Debug)]
24
pub struct FunctionSection {
25
    bytes: Vec<u8>,
26
    num_added: u32,
27
}
28
29
impl FunctionSection {
30
    /// Construct a new function section encoder.
31
16.2k
    pub fn new() -> FunctionSection {
32
16.2k
        FunctionSection {
33
16.2k
            bytes: vec![],
34
16.2k
            num_added: 0,
35
16.2k
        }
36
16.2k
    }
<wasm_encoder::functions::FunctionSection>::new
Line
Count
Source
31
169
    pub fn new() -> FunctionSection {
32
169
        FunctionSection {
33
169
            bytes: vec![],
34
169
            num_added: 0,
35
169
        }
36
169
    }
Unexecuted instantiation: <wasm_encoder::functions::FunctionSection>::new
Unexecuted instantiation: <wasm_encoder::functions::FunctionSection>::new
<wasm_encoder::functions::FunctionSection>::new
Line
Count
Source
31
11.8k
    pub fn new() -> FunctionSection {
32
11.8k
        FunctionSection {
33
11.8k
            bytes: vec![],
34
11.8k
            num_added: 0,
35
11.8k
        }
36
11.8k
    }
<wasm_encoder::functions::FunctionSection>::new
Line
Count
Source
31
4.27k
    pub fn new() -> FunctionSection {
32
4.27k
        FunctionSection {
33
4.27k
            bytes: vec![],
34
4.27k
            num_added: 0,
35
4.27k
        }
36
4.27k
    }
Unexecuted instantiation: <wasm_encoder::functions::FunctionSection>::new
Unexecuted instantiation: <wasm_encoder::functions::FunctionSection>::new
37
38
    /// Define a function that uses the given type.
39
255k
    pub fn function(&mut self, type_index: u32) -> &mut Self {
40
255k
        self.bytes.extend(encoders::u32(type_index));
41
255k
        self.num_added += 1;
42
255k
        self
43
255k
    }
44
}
45
46
impl Section for FunctionSection {
47
16.2k
    fn id(&self) -> u8 {
48
16.2k
        SectionId::Function.into()
49
16.2k
    }
<wasm_encoder::functions::FunctionSection as wasm_encoder::Section>::id
Line
Count
Source
47
169
    fn id(&self) -> u8 {
48
169
        SectionId::Function.into()
49
169
    }
Unexecuted instantiation: <wasm_encoder::functions::FunctionSection as wasm_encoder::Section>::id
Unexecuted instantiation: <wasm_encoder::functions::FunctionSection as wasm_encoder::Section>::id
<wasm_encoder::functions::FunctionSection as wasm_encoder::Section>::id
Line
Count
Source
47
11.8k
    fn id(&self) -> u8 {
48
11.8k
        SectionId::Function.into()
49
11.8k
    }
<wasm_encoder::functions::FunctionSection as wasm_encoder::Section>::id
Line
Count
Source
47
4.27k
    fn id(&self) -> u8 {
48
4.27k
        SectionId::Function.into()
49
4.27k
    }
Unexecuted instantiation: <wasm_encoder::functions::FunctionSection as wasm_encoder::Section>::id
Unexecuted instantiation: <wasm_encoder::functions::FunctionSection as wasm_encoder::Section>::id
50
51
16.2k
    fn encode<S>(&self, sink: &mut S)
52
16.2k
    where
53
16.2k
        S: Extend<u8>,
54
16.2k
    {
55
16.2k
        let num_added = encoders::u32(self.num_added);
56
16.2k
        let n = num_added.len();
57
16.2k
        sink.extend(
58
16.2k
            encoders::u32(u32::try_from(n + self.bytes.len()).unwrap())
59
16.2k
                .chain(num_added)
60
16.2k
                .chain(self.bytes.iter().copied()),
61
16.2k
        );
62
16.2k
    }
<wasm_encoder::functions::FunctionSection as wasm_encoder::Section>::encode::<alloc::vec::Vec<u8>>
Line
Count
Source
51
169
    fn encode<S>(&self, sink: &mut S)
52
169
    where
53
169
        S: Extend<u8>,
54
169
    {
55
169
        let num_added = encoders::u32(self.num_added);
56
169
        let n = num_added.len();
57
169
        sink.extend(
58
169
            encoders::u32(u32::try_from(n + self.bytes.len()).unwrap())
59
169
                .chain(num_added)
60
169
                .chain(self.bytes.iter().copied()),
61
169
        );
62
169
    }
Unexecuted instantiation: <wasm_encoder::functions::FunctionSection as wasm_encoder::Section>::encode::<alloc::vec::Vec<u8>>
Unexecuted instantiation: <wasm_encoder::functions::FunctionSection as wasm_encoder::Section>::encode::<_>
<wasm_encoder::functions::FunctionSection as wasm_encoder::Section>::encode::<alloc::vec::Vec<u8>>
Line
Count
Source
51
11.8k
    fn encode<S>(&self, sink: &mut S)
52
11.8k
    where
53
11.8k
        S: Extend<u8>,
54
11.8k
    {
55
11.8k
        let num_added = encoders::u32(self.num_added);
56
11.8k
        let n = num_added.len();
57
11.8k
        sink.extend(
58
11.8k
            encoders::u32(u32::try_from(n + self.bytes.len()).unwrap())
59
11.8k
                .chain(num_added)
60
11.8k
                .chain(self.bytes.iter().copied()),
61
11.8k
        );
62
11.8k
    }
<wasm_encoder::functions::FunctionSection as wasm_encoder::Section>::encode::<alloc::vec::Vec<u8>>
Line
Count
Source
51
4.27k
    fn encode<S>(&self, sink: &mut S)
52
4.27k
    where
53
4.27k
        S: Extend<u8>,
54
4.27k
    {
55
4.27k
        let num_added = encoders::u32(self.num_added);
56
4.27k
        let n = num_added.len();
57
4.27k
        sink.extend(
58
4.27k
            encoders::u32(u32::try_from(n + self.bytes.len()).unwrap())
59
4.27k
                .chain(num_added)
60
4.27k
                .chain(self.bytes.iter().copied()),
61
4.27k
        );
62
4.27k
    }
Unexecuted instantiation: <wasm_encoder::functions::FunctionSection as wasm_encoder::Section>::encode::<alloc::vec::Vec<u8>>
Unexecuted instantiation: <wasm_encoder::functions::FunctionSection as wasm_encoder::Section>::encode::<alloc::vec::Vec<u8>>
63
}