srctree

Robin Linden parent 175a798d 7f460d57
wasm: Make InstructionStringifyVisitor internal

inlinesplit
wasm/serialize.cpp added: 27, removed: 26, total 1
@@ -9,12 +9,35 @@
 
#include <cstddef>
#include <optional>
#include <sstream>
#include <string>
#include <type_traits>
#include <utility>
#include <variant>
 
namespace wasm::instructions {
namespace {
 
struct InstructionStringifyVisitor {
std::stringstream out;
std::size_t indent = 0;
 
void apply_indent();
 
void operator()(Block const &t);
void operator()(Loop const &t);
void operator()(BreakIf const &t);
void operator()(Return const &);
void operator()(I32Const const &t);
void operator()(LocalGet const &t);
void operator()(LocalSet const &t);
void operator()(LocalTee const &t);
void operator()(I32Load const &t);
 
template<typename T>
requires std::is_empty_v<T>
void operator()(T const &);
};
 
void InstructionStringifyVisitor::apply_indent() {
for (std::size_t i = 0; i < indent; i++) {
@@ -98,6 +121,8 @@ void InstructionStringifyVisitor::operator()(I32Load const &t) {
}
}
 
} // namespace
 
std::string to_string(Instruction const &inst) {
InstructionStringifyVisitor v;
std::visit(v, inst);
 
wasm/serialize.h added: 27, removed: 26, total 1
@@ -10,13 +10,10 @@
#include "wasm/types.h"
 
#include <cassert>
#include <cstddef>
#include <cstdint>
#include <optional>
#include <sstream>
#include <string>
#include <string_view>
#include <type_traits>
#include <variant>
 
namespace wasm {
@@ -88,27 +85,6 @@ constexpr std::string to_string(MemArg const &ma, std::optional<std::uint32_t> n
return out;
}
 
struct InstructionStringifyVisitor {
std::stringstream out;
std::size_t indent = 0;
 
void apply_indent();
 
void operator()(Block const &t);
void operator()(Loop const &t);
void operator()(BreakIf const &t);
void operator()(Return const &);
void operator()(I32Const const &t);
void operator()(LocalGet const &t);
void operator()(LocalSet const &t);
void operator()(LocalTee const &t);
void operator()(I32Load const &t);
 
template<typename T>
requires std::is_empty_v<T>
void operator()(T const &);
};
 
std::string to_string(Instruction const &);
 
} // namespace wasm::instructions