Coverage Report

Created: 2025-03-04 07:22

/src/serenity/Userland/Libraries/LibWasm/Printer/Printer.h
Line
Count
Source (jump to first uncovered line)
1
/*
2
 * Copyright (c) 2021, Ali Mohammad Pur <mpfard@serenityos.org>
3
 *
4
 * SPDX-License-Identifier: BSD-2-Clause
5
 */
6
7
#pragma once
8
9
#include <LibWasm/Types.h>
10
11
namespace Wasm {
12
13
class Reference;
14
class Value;
15
16
ByteString instruction_name(OpCode const& opcode);
17
Optional<OpCode> instruction_from_name(StringView name);
18
19
struct Printer {
20
    explicit Printer(Stream& stream, size_t initial_indent = 0)
21
0
        : m_stream(stream)
22
0
        , m_indent(initial_indent)
23
0
    {
24
0
    }
25
26
    void print(Wasm::BlockType const&);
27
    void print(Wasm::CodeSection const&);
28
    void print(Wasm::CodeSection::Code const&);
29
    void print(Wasm::CodeSection::Func const&);
30
    void print(Wasm::CustomSection const&);
31
    void print(Wasm::DataCountSection const&);
32
    void print(Wasm::DataSection const&);
33
    void print(Wasm::DataSection::Data const&);
34
    void print(Wasm::ElementSection const&);
35
    void print(Wasm::ElementSection::Element const&);
36
    void print(Wasm::ExportSection const&);
37
    void print(Wasm::ExportSection::Export const&);
38
    void print(Wasm::Expression const&);
39
    void print(Wasm::FunctionSection const&);
40
    void print(Wasm::FunctionType const&);
41
    void print(Wasm::GlobalSection const&);
42
    void print(Wasm::GlobalSection::Global const&);
43
    void print(Wasm::GlobalType const&);
44
    void print(Wasm::ImportSection const&);
45
    void print(Wasm::ImportSection::Import const&);
46
    void print(Wasm::Instruction const&);
47
    void print(Wasm::Limits const&);
48
    void print(Wasm::Locals const&);
49
    void print(Wasm::MemorySection const&);
50
    void print(Wasm::MemorySection::Memory const&);
51
    void print(Wasm::MemoryType const&);
52
    void print(Wasm::Module const&);
53
    void print(Wasm::Reference const&);
54
    void print(Wasm::StartSection const&);
55
    void print(Wasm::StartSection::StartFunction const&);
56
    void print(Wasm::TableSection const&);
57
    void print(Wasm::TableSection::Table const&);
58
    void print(Wasm::TableType const&);
59
    void print(Wasm::TypeSection const&);
60
    void print(Wasm::ValueType const&);
61
    void print(Wasm::Value const&);
62
    void print(Wasm::Value const&, ValueType const&);
63
64
private:
65
    void print_indent();
66
    template<typename... Args>
67
    void print(CheckedFormatString<Args...> fmt, Args&&... args)
68
0
    {
69
0
        StringBuilder builder;
70
0
        builder.appendff(fmt.view(), forward<Args>(args)...);
71
0
        m_stream.write_until_depleted(builder.string_view().bytes()).release_value_but_fixme_should_propagate_errors();
72
0
    }
Unexecuted instantiation: void Wasm::Printer::print<unsigned long const&, unsigned long const&>(AK::Format::Detail::CheckedFormatString<AK::Detail::__IdentityType<unsigned long const&>::Type, AK::Detail::__IdentityType<unsigned long const&>::Type>, unsigned long const&, unsigned long const&)
Unexecuted instantiation: void Wasm::Printer::print<unsigned char const&>(AK::Format::Detail::CheckedFormatString<AK::Detail::__IdentityType<unsigned char const&>::Type>, unsigned char const&)
Unexecuted instantiation: void Wasm::Printer::print<unsigned long const&, unsigned int const&, unsigned int const&>(AK::Format::Detail::CheckedFormatString<AK::Detail::__IdentityType<unsigned long const&>::Type, AK::Detail::__IdentityType<unsigned int const&>::Type, AK::Detail::__IdentityType<unsigned int const&>::Type>, unsigned long const&, unsigned int const&, unsigned int const&)
Unexecuted instantiation: void Wasm::Printer::print<unsigned long const&, unsigned int const&, unsigned int const&, unsigned char const&>(AK::Format::Detail::CheckedFormatString<AK::Detail::__IdentityType<unsigned long const&>::Type, AK::Detail::__IdentityType<unsigned int const&>::Type, AK::Detail::__IdentityType<unsigned int const&>::Type, AK::Detail::__IdentityType<unsigned char const&>::Type>, unsigned long const&, unsigned int const&, unsigned int const&, unsigned char const&)
Unexecuted instantiation: void Wasm::Printer::print<AK::ByteString, unsigned long const&>(AK::Format::Detail::CheckedFormatString<AK::Detail::__IdentityType<AK::ByteString>::Type, AK::Detail::__IdentityType<unsigned long const&>::Type>, AK::ByteString&&, unsigned long const&)
Unexecuted instantiation: void Wasm::Printer::print<unsigned char const&, unsigned char const&, unsigned char const&, unsigned char const&, unsigned char const&, unsigned char const&, unsigned char const&, unsigned char const&, unsigned char const&, unsigned char const&, unsigned char const&, unsigned char const&, unsigned char const&, unsigned char const&, unsigned char const&, unsigned char const&>(AK::Format::Detail::CheckedFormatString<AK::Detail::__IdentityType<unsigned char const&>::Type, AK::Detail::__IdentityType<unsigned char const&>::Type, AK::Detail::__IdentityType<unsigned char const&>::Type, AK::Detail::__IdentityType<unsigned char const&>::Type, AK::Detail::__IdentityType<unsigned char const&>::Type, AK::Detail::__IdentityType<unsigned char const&>::Type, AK::Detail::__IdentityType<unsigned char const&>::Type, AK::Detail::__IdentityType<unsigned char const&>::Type, AK::Detail::__IdentityType<unsigned char const&>::Type, AK::Detail::__IdentityType<unsigned char const&>::Type, AK::Detail::__IdentityType<unsigned char const&>::Type, AK::Detail::__IdentityType<unsigned char const&>::Type, AK::Detail::__IdentityType<unsigned char const&>::Type, AK::Detail::__IdentityType<unsigned char const&>::Type, AK::Detail::__IdentityType<unsigned char const&>::Type, AK::Detail::__IdentityType<unsigned char const&>::Type>, unsigned char const&, unsigned char const&, unsigned char const&, unsigned char const&, unsigned char const&, unsigned char const&, unsigned char const&, unsigned char const&, unsigned char const&, unsigned char const&, unsigned char const&, unsigned char const&, unsigned char const&, unsigned char const&, unsigned char const&, unsigned char const&)
Unexecuted instantiation: void Wasm::Printer::print<double const&>(AK::Format::Detail::CheckedFormatString<AK::Detail::__IdentityType<double const&>::Type>, double const&)
Unexecuted instantiation: void Wasm::Printer::print<float const&>(AK::Format::Detail::CheckedFormatString<AK::Detail::__IdentityType<float const&>::Type>, float const&)
Unexecuted instantiation: void Wasm::Printer::print<int const&>(AK::Format::Detail::CheckedFormatString<AK::Detail::__IdentityType<int const&>::Type>, int const&)
Unexecuted instantiation: void Wasm::Printer::print<long const&>(AK::Format::Detail::CheckedFormatString<AK::Detail::__IdentityType<long const&>::Type>, long const&)
Unexecuted instantiation: void Wasm::Printer::print<>(AK::Format::Detail::CheckedFormatString<>)
Unexecuted instantiation: void Wasm::Printer::print<unsigned long const&>(AK::Format::Detail::CheckedFormatString<AK::Detail::__IdentityType<unsigned long const&>::Type>, unsigned long const&)
Unexecuted instantiation: void Wasm::Printer::print<AK::ByteString const&>(AK::Format::Detail::CheckedFormatString<AK::Detail::__IdentityType<AK::ByteString const&>::Type>, AK::ByteString const&)
Unexecuted instantiation: void Wasm::Printer::print<unsigned long>(AK::Format::Detail::CheckedFormatString<AK::Detail::__IdentityType<unsigned long>::Type>, unsigned long&&)
Unexecuted instantiation: void Wasm::Printer::print<unsigned int const&>(AK::Format::Detail::CheckedFormatString<AK::Detail::__IdentityType<unsigned int const&>::Type>, unsigned int const&)
Unexecuted instantiation: void Wasm::Printer::print<char const*>(AK::Format::Detail::CheckedFormatString<AK::Detail::__IdentityType<char const*>::Type>, char const*&&)
Unexecuted instantiation: void Wasm::Printer::print<AK::ByteString const&, AK::ByteString const&>(AK::Format::Detail::CheckedFormatString<AK::Detail::__IdentityType<AK::ByteString const&>::Type, AK::Detail::__IdentityType<AK::ByteString const&>::Type>, AK::ByteString const&, AK::ByteString const&)
Unexecuted instantiation: void Wasm::Printer::print<AK::ByteString>(AK::Format::Detail::CheckedFormatString<AK::Detail::__IdentityType<AK::ByteString>::Type>, AK::ByteString&&)
Unexecuted instantiation: void Wasm::Printer::print<AK::Detail::UFixedBigInt<128ul, AK::Detail::StaticStorage<false, 128ul> > const&>(AK::Format::Detail::CheckedFormatString<AK::Detail::__IdentityType<AK::Detail::UFixedBigInt<128ul, AK::Detail::StaticStorage<false, 128ul> > const&>::Type>, AK::Detail::UFixedBigInt<128ul, AK::Detail::StaticStorage<false, 128ul> > const&)
Unexecuted instantiation: void Wasm::Printer::print<unsigned int>(AK::Format::Detail::CheckedFormatString<AK::Detail::__IdentityType<unsigned int>::Type>, unsigned int&&)
73
74
    Stream& m_stream;
75
    size_t m_indent { 0 };
76
};
77
78
}