/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 | | } |