mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 20:57:35 +00:00
AK: Move Stream
and SeekableStream
from LibCore
`Stream` will be qualified as `AK::Stream` until we remove the `Core::Stream` namespace. `IODevice` now reuses the `SeekMode` that is defined by `SeekableStream`, since defining its own would require us to qualify it with `AK::SeekMode` everywhere.
This commit is contained in:
parent
5f2ea31816
commit
8464da1439
96 changed files with 620 additions and 586 deletions
|
@ -13,7 +13,7 @@
|
|||
|
||||
namespace Wasm {
|
||||
|
||||
ParseError with_eof_check(Core::Stream::Stream const& stream, ParseError error_if_not_eof)
|
||||
ParseError with_eof_check(AK::Stream const& stream, ParseError error_if_not_eof)
|
||||
{
|
||||
if (stream.is_eof())
|
||||
return ParseError::UnexpectedEof;
|
||||
|
@ -21,7 +21,7 @@ ParseError with_eof_check(Core::Stream::Stream const& stream, ParseError error_i
|
|||
}
|
||||
|
||||
template<typename T>
|
||||
static auto parse_vector(Core::Stream::Stream& stream)
|
||||
static auto parse_vector(AK::Stream& stream)
|
||||
{
|
||||
ScopeLogger<WASM_BINPARSER_DEBUG> logger;
|
||||
if constexpr (requires { T::parse(stream); }) {
|
||||
|
@ -72,7 +72,7 @@ static auto parse_vector(Core::Stream::Stream& stream)
|
|||
}
|
||||
}
|
||||
|
||||
static ParseResult<DeprecatedString> parse_name(Core::Stream::Stream& stream)
|
||||
static ParseResult<DeprecatedString> parse_name(AK::Stream& stream)
|
||||
{
|
||||
ScopeLogger<WASM_BINPARSER_DEBUG> logger;
|
||||
auto data = parse_vector<u8>(stream);
|
||||
|
@ -88,8 +88,8 @@ struct ParseUntilAnyOfResult {
|
|||
Vector<T> values;
|
||||
};
|
||||
template<typename T, u8... terminators, typename... Args>
|
||||
static ParseResult<ParseUntilAnyOfResult<T>> parse_until_any_of(Core::Stream::Stream& stream, Args&... args)
|
||||
requires(requires(Core::Stream::Stream& stream, Args... args) { T::parse(stream, args...); })
|
||||
static ParseResult<ParseUntilAnyOfResult<T>> parse_until_any_of(AK::Stream& stream, Args&... args)
|
||||
requires(requires(AK::Stream& stream, Args... args) { T::parse(stream, args...); })
|
||||
{
|
||||
ScopeLogger<WASM_BINPARSER_DEBUG> logger;
|
||||
ReconsumableStream new_stream { stream };
|
||||
|
@ -118,7 +118,7 @@ requires(requires(Core::Stream::Stream& stream, Args... args) { T::parse(stream,
|
|||
}
|
||||
}
|
||||
|
||||
ParseResult<ValueType> ValueType::parse(Core::Stream::Stream& stream)
|
||||
ParseResult<ValueType> ValueType::parse(AK::Stream& stream)
|
||||
{
|
||||
ScopeLogger<WASM_BINPARSER_DEBUG> logger("ValueType"sv);
|
||||
auto tag_or_error = stream.read_value<u8>();
|
||||
|
@ -145,7 +145,7 @@ ParseResult<ValueType> ValueType::parse(Core::Stream::Stream& stream)
|
|||
}
|
||||
}
|
||||
|
||||
ParseResult<ResultType> ResultType::parse(Core::Stream::Stream& stream)
|
||||
ParseResult<ResultType> ResultType::parse(AK::Stream& stream)
|
||||
{
|
||||
ScopeLogger<WASM_BINPARSER_DEBUG> logger("ResultType"sv);
|
||||
auto types = parse_vector<ValueType>(stream);
|
||||
|
@ -154,7 +154,7 @@ ParseResult<ResultType> ResultType::parse(Core::Stream::Stream& stream)
|
|||
return ResultType { types.release_value() };
|
||||
}
|
||||
|
||||
ParseResult<FunctionType> FunctionType::parse(Core::Stream::Stream& stream)
|
||||
ParseResult<FunctionType> FunctionType::parse(AK::Stream& stream)
|
||||
{
|
||||
ScopeLogger<WASM_BINPARSER_DEBUG> logger("FunctionType"sv);
|
||||
auto tag_or_error = stream.read_value<u8>();
|
||||
|
@ -178,7 +178,7 @@ ParseResult<FunctionType> FunctionType::parse(Core::Stream::Stream& stream)
|
|||
return FunctionType { parameters_result.release_value(), results_result.release_value() };
|
||||
}
|
||||
|
||||
ParseResult<Limits> Limits::parse(Core::Stream::Stream& stream)
|
||||
ParseResult<Limits> Limits::parse(AK::Stream& stream)
|
||||
{
|
||||
ScopeLogger<WASM_BINPARSER_DEBUG> logger("Limits"sv);
|
||||
auto flag_or_error = stream.read_value<u8>();
|
||||
|
@ -207,7 +207,7 @@ ParseResult<Limits> Limits::parse(Core::Stream::Stream& stream)
|
|||
return Limits { static_cast<u32>(min), move(max) };
|
||||
}
|
||||
|
||||
ParseResult<MemoryType> MemoryType::parse(Core::Stream::Stream& stream)
|
||||
ParseResult<MemoryType> MemoryType::parse(AK::Stream& stream)
|
||||
{
|
||||
ScopeLogger<WASM_BINPARSER_DEBUG> logger("MemoryType"sv);
|
||||
auto limits_result = Limits::parse(stream);
|
||||
|
@ -216,7 +216,7 @@ ParseResult<MemoryType> MemoryType::parse(Core::Stream::Stream& stream)
|
|||
return MemoryType { limits_result.release_value() };
|
||||
}
|
||||
|
||||
ParseResult<TableType> TableType::parse(Core::Stream::Stream& stream)
|
||||
ParseResult<TableType> TableType::parse(AK::Stream& stream)
|
||||
{
|
||||
ScopeLogger<WASM_BINPARSER_DEBUG> logger("TableType"sv);
|
||||
auto type_result = ValueType::parse(stream);
|
||||
|
@ -230,7 +230,7 @@ ParseResult<TableType> TableType::parse(Core::Stream::Stream& stream)
|
|||
return TableType { type_result.release_value(), limits_result.release_value() };
|
||||
}
|
||||
|
||||
ParseResult<GlobalType> GlobalType::parse(Core::Stream::Stream& stream)
|
||||
ParseResult<GlobalType> GlobalType::parse(AK::Stream& stream)
|
||||
{
|
||||
ScopeLogger<WASM_BINPARSER_DEBUG> logger("GlobalType"sv);
|
||||
auto type_result = ValueType::parse(stream);
|
||||
|
@ -249,7 +249,7 @@ ParseResult<GlobalType> GlobalType::parse(Core::Stream::Stream& stream)
|
|||
return GlobalType { type_result.release_value(), mutable_ == 0x01 };
|
||||
}
|
||||
|
||||
ParseResult<BlockType> BlockType::parse(Core::Stream::Stream& stream)
|
||||
ParseResult<BlockType> BlockType::parse(AK::Stream& stream)
|
||||
{
|
||||
ScopeLogger<WASM_BINPARSER_DEBUG> logger("BlockType"sv);
|
||||
auto kind_or_error = stream.read_value<u8>();
|
||||
|
@ -282,7 +282,7 @@ ParseResult<BlockType> BlockType::parse(Core::Stream::Stream& stream)
|
|||
return BlockType { TypeIndex(index_value) };
|
||||
}
|
||||
|
||||
ParseResult<Vector<Instruction>> Instruction::parse(Core::Stream::Stream& stream, InstructionPointer& ip)
|
||||
ParseResult<Vector<Instruction>> Instruction::parse(AK::Stream& stream, InstructionPointer& ip)
|
||||
{
|
||||
struct NestedInstructionState {
|
||||
Vector<Instruction> prior_instructions;
|
||||
|
@ -782,7 +782,7 @@ ParseResult<Vector<Instruction>> Instruction::parse(Core::Stream::Stream& stream
|
|||
return resulting_instructions;
|
||||
}
|
||||
|
||||
ParseResult<CustomSection> CustomSection::parse(Core::Stream::Stream& stream)
|
||||
ParseResult<CustomSection> CustomSection::parse(AK::Stream& stream)
|
||||
{
|
||||
ScopeLogger<WASM_BINPARSER_DEBUG> logger("CustomSection"sv);
|
||||
auto name = parse_name(stream);
|
||||
|
@ -808,7 +808,7 @@ ParseResult<CustomSection> CustomSection::parse(Core::Stream::Stream& stream)
|
|||
return CustomSection(name.release_value(), move(data_buffer));
|
||||
}
|
||||
|
||||
ParseResult<TypeSection> TypeSection::parse(Core::Stream::Stream& stream)
|
||||
ParseResult<TypeSection> TypeSection::parse(AK::Stream& stream)
|
||||
{
|
||||
ScopeLogger<WASM_BINPARSER_DEBUG> logger("TypeSection"sv);
|
||||
auto types = parse_vector<FunctionType>(stream);
|
||||
|
@ -817,7 +817,7 @@ ParseResult<TypeSection> TypeSection::parse(Core::Stream::Stream& stream)
|
|||
return TypeSection { types.release_value() };
|
||||
}
|
||||
|
||||
ParseResult<ImportSection::Import> ImportSection::Import::parse(Core::Stream::Stream& stream)
|
||||
ParseResult<ImportSection::Import> ImportSection::Import::parse(AK::Stream& stream)
|
||||
{
|
||||
ScopeLogger<WASM_BINPARSER_DEBUG> logger("Import"sv);
|
||||
auto module = parse_name(stream);
|
||||
|
@ -850,7 +850,7 @@ ParseResult<ImportSection::Import> ImportSection::Import::parse(Core::Stream::St
|
|||
}
|
||||
}
|
||||
|
||||
ParseResult<ImportSection> ImportSection::parse(Core::Stream::Stream& stream)
|
||||
ParseResult<ImportSection> ImportSection::parse(AK::Stream& stream)
|
||||
{
|
||||
ScopeLogger<WASM_BINPARSER_DEBUG> logger("ImportSection"sv);
|
||||
auto imports = parse_vector<Import>(stream);
|
||||
|
@ -859,7 +859,7 @@ ParseResult<ImportSection> ImportSection::parse(Core::Stream::Stream& stream)
|
|||
return ImportSection { imports.release_value() };
|
||||
}
|
||||
|
||||
ParseResult<FunctionSection> FunctionSection::parse(Core::Stream::Stream& stream)
|
||||
ParseResult<FunctionSection> FunctionSection::parse(AK::Stream& stream)
|
||||
{
|
||||
ScopeLogger<WASM_BINPARSER_DEBUG> logger("FunctionSection"sv);
|
||||
auto indices = parse_vector<size_t>(stream);
|
||||
|
@ -874,7 +874,7 @@ ParseResult<FunctionSection> FunctionSection::parse(Core::Stream::Stream& stream
|
|||
return FunctionSection { move(typed_indices) };
|
||||
}
|
||||
|
||||
ParseResult<TableSection::Table> TableSection::Table::parse(Core::Stream::Stream& stream)
|
||||
ParseResult<TableSection::Table> TableSection::Table::parse(AK::Stream& stream)
|
||||
{
|
||||
ScopeLogger<WASM_BINPARSER_DEBUG> logger("Table"sv);
|
||||
auto type = TableType::parse(stream);
|
||||
|
@ -883,7 +883,7 @@ ParseResult<TableSection::Table> TableSection::Table::parse(Core::Stream::Stream
|
|||
return Table { type.release_value() };
|
||||
}
|
||||
|
||||
ParseResult<TableSection> TableSection::parse(Core::Stream::Stream& stream)
|
||||
ParseResult<TableSection> TableSection::parse(AK::Stream& stream)
|
||||
{
|
||||
ScopeLogger<WASM_BINPARSER_DEBUG> logger("TableSection"sv);
|
||||
auto tables = parse_vector<Table>(stream);
|
||||
|
@ -892,7 +892,7 @@ ParseResult<TableSection> TableSection::parse(Core::Stream::Stream& stream)
|
|||
return TableSection { tables.release_value() };
|
||||
}
|
||||
|
||||
ParseResult<MemorySection::Memory> MemorySection::Memory::parse(Core::Stream::Stream& stream)
|
||||
ParseResult<MemorySection::Memory> MemorySection::Memory::parse(AK::Stream& stream)
|
||||
{
|
||||
ScopeLogger<WASM_BINPARSER_DEBUG> logger("Memory"sv);
|
||||
auto type = MemoryType::parse(stream);
|
||||
|
@ -901,7 +901,7 @@ ParseResult<MemorySection::Memory> MemorySection::Memory::parse(Core::Stream::St
|
|||
return Memory { type.release_value() };
|
||||
}
|
||||
|
||||
ParseResult<MemorySection> MemorySection::parse(Core::Stream::Stream& stream)
|
||||
ParseResult<MemorySection> MemorySection::parse(AK::Stream& stream)
|
||||
{
|
||||
ScopeLogger<WASM_BINPARSER_DEBUG> logger("MemorySection"sv);
|
||||
auto memories = parse_vector<Memory>(stream);
|
||||
|
@ -910,7 +910,7 @@ ParseResult<MemorySection> MemorySection::parse(Core::Stream::Stream& stream)
|
|||
return MemorySection { memories.release_value() };
|
||||
}
|
||||
|
||||
ParseResult<Expression> Expression::parse(Core::Stream::Stream& stream)
|
||||
ParseResult<Expression> Expression::parse(AK::Stream& stream)
|
||||
{
|
||||
ScopeLogger<WASM_BINPARSER_DEBUG> logger("Expression"sv);
|
||||
InstructionPointer ip { 0 };
|
||||
|
@ -921,7 +921,7 @@ ParseResult<Expression> Expression::parse(Core::Stream::Stream& stream)
|
|||
return Expression { move(instructions.value().values) };
|
||||
}
|
||||
|
||||
ParseResult<GlobalSection::Global> GlobalSection::Global::parse(Core::Stream::Stream& stream)
|
||||
ParseResult<GlobalSection::Global> GlobalSection::Global::parse(AK::Stream& stream)
|
||||
{
|
||||
ScopeLogger<WASM_BINPARSER_DEBUG> logger("Global"sv);
|
||||
auto type = GlobalType::parse(stream);
|
||||
|
@ -933,7 +933,7 @@ ParseResult<GlobalSection::Global> GlobalSection::Global::parse(Core::Stream::St
|
|||
return Global { type.release_value(), exprs.release_value() };
|
||||
}
|
||||
|
||||
ParseResult<GlobalSection> GlobalSection::parse(Core::Stream::Stream& stream)
|
||||
ParseResult<GlobalSection> GlobalSection::parse(AK::Stream& stream)
|
||||
{
|
||||
ScopeLogger<WASM_BINPARSER_DEBUG> logger("GlobalSection"sv);
|
||||
auto result = parse_vector<Global>(stream);
|
||||
|
@ -942,7 +942,7 @@ ParseResult<GlobalSection> GlobalSection::parse(Core::Stream::Stream& stream)
|
|||
return GlobalSection { result.release_value() };
|
||||
}
|
||||
|
||||
ParseResult<ExportSection::Export> ExportSection::Export::parse(Core::Stream::Stream& stream)
|
||||
ParseResult<ExportSection::Export> ExportSection::Export::parse(AK::Stream& stream)
|
||||
{
|
||||
ScopeLogger<WASM_BINPARSER_DEBUG> logger("Export"sv);
|
||||
auto name = parse_name(stream);
|
||||
|
@ -973,7 +973,7 @@ ParseResult<ExportSection::Export> ExportSection::Export::parse(Core::Stream::St
|
|||
}
|
||||
}
|
||||
|
||||
ParseResult<ExportSection> ExportSection::parse(Core::Stream::Stream& stream)
|
||||
ParseResult<ExportSection> ExportSection::parse(AK::Stream& stream)
|
||||
{
|
||||
ScopeLogger<WASM_BINPARSER_DEBUG> logger("ExportSection"sv);
|
||||
auto result = parse_vector<Export>(stream);
|
||||
|
@ -982,7 +982,7 @@ ParseResult<ExportSection> ExportSection::parse(Core::Stream::Stream& stream)
|
|||
return ExportSection { result.release_value() };
|
||||
}
|
||||
|
||||
ParseResult<StartSection::StartFunction> StartSection::StartFunction::parse(Core::Stream::Stream& stream)
|
||||
ParseResult<StartSection::StartFunction> StartSection::StartFunction::parse(AK::Stream& stream)
|
||||
{
|
||||
ScopeLogger<WASM_BINPARSER_DEBUG> logger("StartFunction"sv);
|
||||
auto index = GenericIndexParser<FunctionIndex>::parse(stream);
|
||||
|
@ -991,7 +991,7 @@ ParseResult<StartSection::StartFunction> StartSection::StartFunction::parse(Core
|
|||
return StartFunction { index.release_value() };
|
||||
}
|
||||
|
||||
ParseResult<StartSection> StartSection::parse(Core::Stream::Stream& stream)
|
||||
ParseResult<StartSection> StartSection::parse(AK::Stream& stream)
|
||||
{
|
||||
ScopeLogger<WASM_BINPARSER_DEBUG> logger("StartSection"sv);
|
||||
auto result = StartFunction::parse(stream);
|
||||
|
@ -1000,7 +1000,7 @@ ParseResult<StartSection> StartSection::parse(Core::Stream::Stream& stream)
|
|||
return StartSection { result.release_value() };
|
||||
}
|
||||
|
||||
ParseResult<ElementSection::SegmentType0> ElementSection::SegmentType0::parse(Core::Stream::Stream& stream)
|
||||
ParseResult<ElementSection::SegmentType0> ElementSection::SegmentType0::parse(AK::Stream& stream)
|
||||
{
|
||||
auto expression = Expression::parse(stream);
|
||||
if (expression.is_error())
|
||||
|
@ -1012,7 +1012,7 @@ ParseResult<ElementSection::SegmentType0> ElementSection::SegmentType0::parse(Co
|
|||
return SegmentType0 { indices.release_value(), Active { 0, expression.release_value() } };
|
||||
}
|
||||
|
||||
ParseResult<ElementSection::SegmentType1> ElementSection::SegmentType1::parse(Core::Stream::Stream& stream)
|
||||
ParseResult<ElementSection::SegmentType1> ElementSection::SegmentType1::parse(AK::Stream& stream)
|
||||
{
|
||||
auto kind_or_error = stream.read_value<u8>();
|
||||
if (kind_or_error.is_error())
|
||||
|
@ -1028,49 +1028,49 @@ ParseResult<ElementSection::SegmentType1> ElementSection::SegmentType1::parse(Co
|
|||
return SegmentType1 { indices.release_value() };
|
||||
}
|
||||
|
||||
ParseResult<ElementSection::SegmentType2> ElementSection::SegmentType2::parse(Core::Stream::Stream& stream)
|
||||
ParseResult<ElementSection::SegmentType2> ElementSection::SegmentType2::parse(AK::Stream& stream)
|
||||
{
|
||||
dbgln("Type 2");
|
||||
(void)stream;
|
||||
return ParseError::NotImplemented;
|
||||
}
|
||||
|
||||
ParseResult<ElementSection::SegmentType3> ElementSection::SegmentType3::parse(Core::Stream::Stream& stream)
|
||||
ParseResult<ElementSection::SegmentType3> ElementSection::SegmentType3::parse(AK::Stream& stream)
|
||||
{
|
||||
dbgln("Type 3");
|
||||
(void)stream;
|
||||
return ParseError::NotImplemented;
|
||||
}
|
||||
|
||||
ParseResult<ElementSection::SegmentType4> ElementSection::SegmentType4::parse(Core::Stream::Stream& stream)
|
||||
ParseResult<ElementSection::SegmentType4> ElementSection::SegmentType4::parse(AK::Stream& stream)
|
||||
{
|
||||
dbgln("Type 4");
|
||||
(void)stream;
|
||||
return ParseError::NotImplemented;
|
||||
}
|
||||
|
||||
ParseResult<ElementSection::SegmentType5> ElementSection::SegmentType5::parse(Core::Stream::Stream& stream)
|
||||
ParseResult<ElementSection::SegmentType5> ElementSection::SegmentType5::parse(AK::Stream& stream)
|
||||
{
|
||||
dbgln("Type 5");
|
||||
(void)stream;
|
||||
return ParseError::NotImplemented;
|
||||
}
|
||||
|
||||
ParseResult<ElementSection::SegmentType6> ElementSection::SegmentType6::parse(Core::Stream::Stream& stream)
|
||||
ParseResult<ElementSection::SegmentType6> ElementSection::SegmentType6::parse(AK::Stream& stream)
|
||||
{
|
||||
dbgln("Type 6");
|
||||
(void)stream;
|
||||
return ParseError::NotImplemented;
|
||||
}
|
||||
|
||||
ParseResult<ElementSection::SegmentType7> ElementSection::SegmentType7::parse(Core::Stream::Stream& stream)
|
||||
ParseResult<ElementSection::SegmentType7> ElementSection::SegmentType7::parse(AK::Stream& stream)
|
||||
{
|
||||
dbgln("Type 7");
|
||||
(void)stream;
|
||||
return ParseError::NotImplemented;
|
||||
}
|
||||
|
||||
ParseResult<ElementSection::Element> ElementSection::Element::parse(Core::Stream::Stream& stream)
|
||||
ParseResult<ElementSection::Element> ElementSection::Element::parse(AK::Stream& stream)
|
||||
{
|
||||
ScopeLogger<WASM_BINPARSER_DEBUG> logger("Element"sv);
|
||||
auto tag_or_error = stream.read_value<u8>();
|
||||
|
@ -1139,7 +1139,7 @@ ParseResult<ElementSection::Element> ElementSection::Element::parse(Core::Stream
|
|||
}
|
||||
}
|
||||
|
||||
ParseResult<ElementSection> ElementSection::parse(Core::Stream::Stream& stream)
|
||||
ParseResult<ElementSection> ElementSection::parse(AK::Stream& stream)
|
||||
{
|
||||
ScopeLogger<WASM_BINPARSER_DEBUG> logger("ElementSection"sv);
|
||||
auto result = parse_vector<Element>(stream);
|
||||
|
@ -1148,7 +1148,7 @@ ParseResult<ElementSection> ElementSection::parse(Core::Stream::Stream& stream)
|
|||
return ElementSection { result.release_value() };
|
||||
}
|
||||
|
||||
ParseResult<Locals> Locals::parse(Core::Stream::Stream& stream)
|
||||
ParseResult<Locals> Locals::parse(AK::Stream& stream)
|
||||
{
|
||||
ScopeLogger<WASM_BINPARSER_DEBUG> logger("Locals"sv);
|
||||
size_t count;
|
||||
|
@ -1166,7 +1166,7 @@ ParseResult<Locals> Locals::parse(Core::Stream::Stream& stream)
|
|||
return Locals { static_cast<u32>(count), type.release_value() };
|
||||
}
|
||||
|
||||
ParseResult<CodeSection::Func> CodeSection::Func::parse(Core::Stream::Stream& stream)
|
||||
ParseResult<CodeSection::Func> CodeSection::Func::parse(AK::Stream& stream)
|
||||
{
|
||||
ScopeLogger<WASM_BINPARSER_DEBUG> logger("Func"sv);
|
||||
auto locals = parse_vector<Locals>(stream);
|
||||
|
@ -1178,7 +1178,7 @@ ParseResult<CodeSection::Func> CodeSection::Func::parse(Core::Stream::Stream& st
|
|||
return Func { locals.release_value(), body.release_value() };
|
||||
}
|
||||
|
||||
ParseResult<CodeSection::Code> CodeSection::Code::parse(Core::Stream::Stream& stream)
|
||||
ParseResult<CodeSection::Code> CodeSection::Code::parse(AK::Stream& stream)
|
||||
{
|
||||
ScopeLogger<WASM_BINPARSER_DEBUG> logger("Code"sv);
|
||||
size_t size;
|
||||
|
@ -1195,7 +1195,7 @@ ParseResult<CodeSection::Code> CodeSection::Code::parse(Core::Stream::Stream& st
|
|||
return Code { static_cast<u32>(size), func.release_value() };
|
||||
}
|
||||
|
||||
ParseResult<CodeSection> CodeSection::parse(Core::Stream::Stream& stream)
|
||||
ParseResult<CodeSection> CodeSection::parse(AK::Stream& stream)
|
||||
{
|
||||
ScopeLogger<WASM_BINPARSER_DEBUG> logger("CodeSection"sv);
|
||||
auto result = parse_vector<Code>(stream);
|
||||
|
@ -1204,7 +1204,7 @@ ParseResult<CodeSection> CodeSection::parse(Core::Stream::Stream& stream)
|
|||
return CodeSection { result.release_value() };
|
||||
}
|
||||
|
||||
ParseResult<DataSection::Data> DataSection::Data::parse(Core::Stream::Stream& stream)
|
||||
ParseResult<DataSection::Data> DataSection::Data::parse(AK::Stream& stream)
|
||||
{
|
||||
ScopeLogger<WASM_BINPARSER_DEBUG> logger("Data"sv);
|
||||
auto tag_or_error = stream.read_value<u8>();
|
||||
|
@ -1246,7 +1246,7 @@ ParseResult<DataSection::Data> DataSection::Data::parse(Core::Stream::Stream& st
|
|||
VERIFY_NOT_REACHED();
|
||||
}
|
||||
|
||||
ParseResult<DataSection> DataSection::parse(Core::Stream::Stream& stream)
|
||||
ParseResult<DataSection> DataSection::parse(AK::Stream& stream)
|
||||
{
|
||||
ScopeLogger<WASM_BINPARSER_DEBUG> logger("DataSection"sv);
|
||||
auto data = parse_vector<Data>(stream);
|
||||
|
@ -1256,7 +1256,7 @@ ParseResult<DataSection> DataSection::parse(Core::Stream::Stream& stream)
|
|||
return DataSection { data.release_value() };
|
||||
}
|
||||
|
||||
ParseResult<DataCountSection> DataCountSection::parse([[maybe_unused]] Core::Stream::Stream& stream)
|
||||
ParseResult<DataCountSection> DataCountSection::parse([[maybe_unused]] AK::Stream& stream)
|
||||
{
|
||||
ScopeLogger<WASM_BINPARSER_DEBUG> logger("DataCountSection"sv);
|
||||
u32 value;
|
||||
|
@ -1272,7 +1272,7 @@ ParseResult<DataCountSection> DataCountSection::parse([[maybe_unused]] Core::Str
|
|||
return DataCountSection { value };
|
||||
}
|
||||
|
||||
ParseResult<Module> Module::parse(Core::Stream::Stream& stream)
|
||||
ParseResult<Module> Module::parse(AK::Stream& stream)
|
||||
{
|
||||
ScopeLogger<WASM_BINPARSER_DEBUG> logger("Module"sv);
|
||||
u8 buf[4];
|
||||
|
|
|
@ -18,7 +18,7 @@ DeprecatedString instruction_name(OpCode const& opcode);
|
|||
Optional<OpCode> instruction_from_name(StringView name);
|
||||
|
||||
struct Printer {
|
||||
explicit Printer(Core::Stream::Stream& stream, size_t initial_indent = 0)
|
||||
explicit Printer(AK::Stream& stream, size_t initial_indent = 0)
|
||||
: m_stream(stream)
|
||||
, m_indent(initial_indent)
|
||||
{
|
||||
|
@ -72,7 +72,7 @@ private:
|
|||
m_stream.write_entire_buffer(builder.string_view().bytes()).release_value_but_fixme_should_propagate_errors();
|
||||
}
|
||||
|
||||
Core::Stream::Stream& m_stream;
|
||||
AK::Stream& m_stream;
|
||||
size_t m_indent { 0 };
|
||||
};
|
||||
|
||||
|
|
|
@ -59,11 +59,11 @@ AK_TYPEDEF_DISTINCT_ORDERED_ID(size_t, LabelIndex);
|
|||
AK_TYPEDEF_DISTINCT_ORDERED_ID(size_t, DataIndex);
|
||||
AK_TYPEDEF_DISTINCT_NUMERIC_GENERAL(u64, InstructionPointer, Arithmetic, Comparison, Flags, Increment);
|
||||
|
||||
ParseError with_eof_check(Core::Stream::Stream const& stream, ParseError error_if_not_eof);
|
||||
ParseError with_eof_check(AK::Stream const& stream, ParseError error_if_not_eof);
|
||||
|
||||
template<typename T>
|
||||
struct GenericIndexParser {
|
||||
static ParseResult<T> parse(Core::Stream::Stream& stream)
|
||||
static ParseResult<T> parse(AK::Stream& stream)
|
||||
{
|
||||
size_t value;
|
||||
Core::Stream::WrapInAKInputStream wrapped_stream { stream };
|
||||
|
@ -73,9 +73,9 @@ struct GenericIndexParser {
|
|||
}
|
||||
};
|
||||
|
||||
class ReconsumableStream : public Core::Stream::Stream {
|
||||
class ReconsumableStream : public AK::Stream {
|
||||
public:
|
||||
explicit ReconsumableStream(Core::Stream::Stream& stream)
|
||||
explicit ReconsumableStream(AK::Stream& stream)
|
||||
: m_stream(stream)
|
||||
{
|
||||
}
|
||||
|
@ -133,13 +133,13 @@ private:
|
|||
m_stream.close();
|
||||
}
|
||||
|
||||
Core::Stream::Stream& m_stream;
|
||||
AK::Stream& m_stream;
|
||||
Vector<u8, 8> m_buffer;
|
||||
};
|
||||
|
||||
class ConstrainedStream : public Core::Stream::Stream {
|
||||
class ConstrainedStream : public AK::Stream {
|
||||
public:
|
||||
explicit ConstrainedStream(Core::Stream::Stream& stream, size_t size)
|
||||
explicit ConstrainedStream(AK::Stream& stream, size_t size)
|
||||
: m_stream(stream)
|
||||
, m_bytes_left(size)
|
||||
{
|
||||
|
@ -182,7 +182,7 @@ private:
|
|||
m_stream.close();
|
||||
}
|
||||
|
||||
Core::Stream::Stream& m_stream;
|
||||
AK::Stream& m_stream;
|
||||
size_t m_bytes_left { 0 };
|
||||
};
|
||||
|
||||
|
@ -211,7 +211,7 @@ public:
|
|||
auto is_numeric() const { return !is_reference(); }
|
||||
auto kind() const { return m_kind; }
|
||||
|
||||
static ParseResult<ValueType> parse(Core::Stream::Stream& stream);
|
||||
static ParseResult<ValueType> parse(AK::Stream& stream);
|
||||
|
||||
static DeprecatedString kind_name(Kind kind)
|
||||
{
|
||||
|
@ -250,7 +250,7 @@ public:
|
|||
|
||||
auto const& types() const { return m_types; }
|
||||
|
||||
static ParseResult<ResultType> parse(Core::Stream::Stream& stream);
|
||||
static ParseResult<ResultType> parse(AK::Stream& stream);
|
||||
|
||||
private:
|
||||
Vector<ValueType> m_types;
|
||||
|
@ -268,7 +268,7 @@ public:
|
|||
auto& parameters() const { return m_parameters; }
|
||||
auto& results() const { return m_results; }
|
||||
|
||||
static ParseResult<FunctionType> parse(Core::Stream::Stream& stream);
|
||||
static ParseResult<FunctionType> parse(AK::Stream& stream);
|
||||
|
||||
private:
|
||||
Vector<ValueType> m_parameters;
|
||||
|
@ -287,7 +287,7 @@ public:
|
|||
auto min() const { return m_min; }
|
||||
auto& max() const { return m_max; }
|
||||
|
||||
static ParseResult<Limits> parse(Core::Stream::Stream& stream);
|
||||
static ParseResult<Limits> parse(AK::Stream& stream);
|
||||
|
||||
private:
|
||||
u32 m_min { 0 };
|
||||
|
@ -304,7 +304,7 @@ public:
|
|||
|
||||
auto& limits() const { return m_limits; }
|
||||
|
||||
static ParseResult<MemoryType> parse(Core::Stream::Stream& stream);
|
||||
static ParseResult<MemoryType> parse(AK::Stream& stream);
|
||||
|
||||
private:
|
||||
Limits m_limits;
|
||||
|
@ -323,7 +323,7 @@ public:
|
|||
auto& limits() const { return m_limits; }
|
||||
auto& element_type() const { return m_element_type; }
|
||||
|
||||
static ParseResult<TableType> parse(Core::Stream::Stream& stream);
|
||||
static ParseResult<TableType> parse(AK::Stream& stream);
|
||||
|
||||
private:
|
||||
ValueType m_element_type;
|
||||
|
@ -342,7 +342,7 @@ public:
|
|||
auto& type() const { return m_type; }
|
||||
auto is_mutable() const { return m_is_mutable; }
|
||||
|
||||
static ParseResult<GlobalType> parse(Core::Stream::Stream& stream);
|
||||
static ParseResult<GlobalType> parse(AK::Stream& stream);
|
||||
|
||||
private:
|
||||
ValueType m_type;
|
||||
|
@ -388,7 +388,7 @@ public:
|
|||
return m_type_index;
|
||||
}
|
||||
|
||||
static ParseResult<BlockType> parse(Core::Stream::Stream& stream);
|
||||
static ParseResult<BlockType> parse(AK::Stream& stream);
|
||||
|
||||
private:
|
||||
Kind m_kind { Empty };
|
||||
|
@ -452,7 +452,7 @@ public:
|
|||
{
|
||||
}
|
||||
|
||||
static ParseResult<Vector<Instruction>> parse(Core::Stream::Stream& stream, InstructionPointer& ip);
|
||||
static ParseResult<Vector<Instruction>> parse(AK::Stream& stream, InstructionPointer& ip);
|
||||
|
||||
auto& opcode() const { return m_opcode; }
|
||||
auto& arguments() const { return m_arguments; }
|
||||
|
@ -499,7 +499,7 @@ public:
|
|||
auto& name() const { return m_name; }
|
||||
auto& contents() const { return m_contents; }
|
||||
|
||||
static ParseResult<CustomSection> parse(Core::Stream::Stream& stream);
|
||||
static ParseResult<CustomSection> parse(AK::Stream& stream);
|
||||
|
||||
private:
|
||||
DeprecatedString m_name;
|
||||
|
@ -517,7 +517,7 @@ public:
|
|||
|
||||
auto& types() const { return m_types; }
|
||||
|
||||
static ParseResult<TypeSection> parse(Core::Stream::Stream& stream);
|
||||
static ParseResult<TypeSection> parse(AK::Stream& stream);
|
||||
|
||||
private:
|
||||
Vector<FunctionType> m_types;
|
||||
|
@ -539,7 +539,7 @@ public:
|
|||
auto& name() const { return m_name; }
|
||||
auto& description() const { return m_description; }
|
||||
|
||||
static ParseResult<Import> parse(Core::Stream::Stream& stream);
|
||||
static ParseResult<Import> parse(AK::Stream& stream);
|
||||
|
||||
private:
|
||||
template<typename T>
|
||||
|
@ -566,7 +566,7 @@ public:
|
|||
|
||||
auto& imports() const { return m_imports; }
|
||||
|
||||
static ParseResult<ImportSection> parse(Core::Stream::Stream& stream);
|
||||
static ParseResult<ImportSection> parse(AK::Stream& stream);
|
||||
|
||||
private:
|
||||
Vector<Import> m_imports;
|
||||
|
@ -583,7 +583,7 @@ public:
|
|||
|
||||
auto& types() const { return m_types; }
|
||||
|
||||
static ParseResult<FunctionSection> parse(Core::Stream::Stream& stream);
|
||||
static ParseResult<FunctionSection> parse(AK::Stream& stream);
|
||||
|
||||
private:
|
||||
Vector<TypeIndex> m_types;
|
||||
|
@ -600,7 +600,7 @@ public:
|
|||
|
||||
auto& type() const { return m_type; }
|
||||
|
||||
static ParseResult<Table> parse(Core::Stream::Stream& stream);
|
||||
static ParseResult<Table> parse(AK::Stream& stream);
|
||||
|
||||
private:
|
||||
TableType m_type;
|
||||
|
@ -616,7 +616,7 @@ public:
|
|||
|
||||
auto& tables() const { return m_tables; };
|
||||
|
||||
static ParseResult<TableSection> parse(Core::Stream::Stream& stream);
|
||||
static ParseResult<TableSection> parse(AK::Stream& stream);
|
||||
|
||||
private:
|
||||
Vector<Table> m_tables;
|
||||
|
@ -633,7 +633,7 @@ public:
|
|||
|
||||
auto& type() const { return m_type; }
|
||||
|
||||
static ParseResult<Memory> parse(Core::Stream::Stream& stream);
|
||||
static ParseResult<Memory> parse(AK::Stream& stream);
|
||||
|
||||
private:
|
||||
MemoryType m_type;
|
||||
|
@ -649,7 +649,7 @@ public:
|
|||
|
||||
auto& memories() const { return m_memories; }
|
||||
|
||||
static ParseResult<MemorySection> parse(Core::Stream::Stream& stream);
|
||||
static ParseResult<MemorySection> parse(AK::Stream& stream);
|
||||
|
||||
private:
|
||||
Vector<Memory> m_memories;
|
||||
|
@ -664,7 +664,7 @@ public:
|
|||
|
||||
auto& instructions() const { return m_instructions; }
|
||||
|
||||
static ParseResult<Expression> parse(Core::Stream::Stream& stream);
|
||||
static ParseResult<Expression> parse(AK::Stream& stream);
|
||||
|
||||
private:
|
||||
Vector<Instruction> m_instructions;
|
||||
|
@ -683,7 +683,7 @@ public:
|
|||
auto& type() const { return m_type; }
|
||||
auto& expression() const { return m_expression; }
|
||||
|
||||
static ParseResult<Global> parse(Core::Stream::Stream& stream);
|
||||
static ParseResult<Global> parse(AK::Stream& stream);
|
||||
|
||||
private:
|
||||
GlobalType m_type;
|
||||
|
@ -700,7 +700,7 @@ public:
|
|||
|
||||
auto& entries() const { return m_entries; }
|
||||
|
||||
static ParseResult<GlobalSection> parse(Core::Stream::Stream& stream);
|
||||
static ParseResult<GlobalSection> parse(AK::Stream& stream);
|
||||
|
||||
private:
|
||||
Vector<Global> m_entries;
|
||||
|
@ -722,7 +722,7 @@ public:
|
|||
auto& name() const { return m_name; }
|
||||
auto& description() const { return m_description; }
|
||||
|
||||
static ParseResult<Export> parse(Core::Stream::Stream& stream);
|
||||
static ParseResult<Export> parse(AK::Stream& stream);
|
||||
|
||||
private:
|
||||
DeprecatedString m_name;
|
||||
|
@ -738,7 +738,7 @@ public:
|
|||
|
||||
auto& entries() const { return m_entries; }
|
||||
|
||||
static ParseResult<ExportSection> parse(Core::Stream::Stream& stream);
|
||||
static ParseResult<ExportSection> parse(AK::Stream& stream);
|
||||
|
||||
private:
|
||||
Vector<Export> m_entries;
|
||||
|
@ -755,7 +755,7 @@ public:
|
|||
|
||||
auto& index() const { return m_index; }
|
||||
|
||||
static ParseResult<StartFunction> parse(Core::Stream::Stream& stream);
|
||||
static ParseResult<StartFunction> parse(AK::Stream& stream);
|
||||
|
||||
private:
|
||||
FunctionIndex m_index;
|
||||
|
@ -770,7 +770,7 @@ public:
|
|||
|
||||
auto& function() const { return m_function; }
|
||||
|
||||
static ParseResult<StartSection> parse(Core::Stream::Stream& stream);
|
||||
static ParseResult<StartSection> parse(AK::Stream& stream);
|
||||
|
||||
private:
|
||||
StartFunction m_function;
|
||||
|
@ -789,43 +789,43 @@ public:
|
|||
|
||||
struct SegmentType0 {
|
||||
// FIXME: Implement me!
|
||||
static ParseResult<SegmentType0> parse(Core::Stream::Stream& stream);
|
||||
static ParseResult<SegmentType0> parse(AK::Stream& stream);
|
||||
|
||||
Vector<FunctionIndex> function_indices;
|
||||
Active mode;
|
||||
};
|
||||
struct SegmentType1 {
|
||||
static ParseResult<SegmentType1> parse(Core::Stream::Stream& stream);
|
||||
static ParseResult<SegmentType1> parse(AK::Stream& stream);
|
||||
|
||||
Vector<FunctionIndex> function_indices;
|
||||
};
|
||||
struct SegmentType2 {
|
||||
// FIXME: Implement me!
|
||||
static ParseResult<SegmentType2> parse(Core::Stream::Stream& stream);
|
||||
static ParseResult<SegmentType2> parse(AK::Stream& stream);
|
||||
};
|
||||
struct SegmentType3 {
|
||||
// FIXME: Implement me!
|
||||
static ParseResult<SegmentType3> parse(Core::Stream::Stream& stream);
|
||||
static ParseResult<SegmentType3> parse(AK::Stream& stream);
|
||||
};
|
||||
struct SegmentType4 {
|
||||
// FIXME: Implement me!
|
||||
static ParseResult<SegmentType4> parse(Core::Stream::Stream& stream);
|
||||
static ParseResult<SegmentType4> parse(AK::Stream& stream);
|
||||
};
|
||||
struct SegmentType5 {
|
||||
// FIXME: Implement me!
|
||||
static ParseResult<SegmentType5> parse(Core::Stream::Stream& stream);
|
||||
static ParseResult<SegmentType5> parse(AK::Stream& stream);
|
||||
};
|
||||
struct SegmentType6 {
|
||||
// FIXME: Implement me!
|
||||
static ParseResult<SegmentType6> parse(Core::Stream::Stream& stream);
|
||||
static ParseResult<SegmentType6> parse(AK::Stream& stream);
|
||||
};
|
||||
struct SegmentType7 {
|
||||
// FIXME: Implement me!
|
||||
static ParseResult<SegmentType7> parse(Core::Stream::Stream& stream);
|
||||
static ParseResult<SegmentType7> parse(AK::Stream& stream);
|
||||
};
|
||||
|
||||
struct Element {
|
||||
static ParseResult<Element> parse(Core::Stream::Stream&);
|
||||
static ParseResult<Element> parse(AK::Stream&);
|
||||
|
||||
ValueType type;
|
||||
Vector<Expression> init;
|
||||
|
@ -841,7 +841,7 @@ public:
|
|||
|
||||
auto& segments() const { return m_segments; }
|
||||
|
||||
static ParseResult<ElementSection> parse(Core::Stream::Stream& stream);
|
||||
static ParseResult<ElementSection> parse(AK::Stream& stream);
|
||||
|
||||
private:
|
||||
Vector<Element> m_segments;
|
||||
|
@ -859,7 +859,7 @@ public:
|
|||
auto n() const { return m_n; }
|
||||
auto& type() const { return m_type; }
|
||||
|
||||
static ParseResult<Locals> parse(Core::Stream::Stream& stream);
|
||||
static ParseResult<Locals> parse(AK::Stream& stream);
|
||||
|
||||
private:
|
||||
u32 m_n { 0 };
|
||||
|
@ -880,7 +880,7 @@ public:
|
|||
auto& locals() const { return m_locals; }
|
||||
auto& body() const { return m_body; }
|
||||
|
||||
static ParseResult<Func> parse(Core::Stream::Stream& stream);
|
||||
static ParseResult<Func> parse(AK::Stream& stream);
|
||||
|
||||
private:
|
||||
Vector<Locals> m_locals;
|
||||
|
@ -897,7 +897,7 @@ public:
|
|||
auto size() const { return m_size; }
|
||||
auto& func() const { return m_func; }
|
||||
|
||||
static ParseResult<Code> parse(Core::Stream::Stream& stream);
|
||||
static ParseResult<Code> parse(AK::Stream& stream);
|
||||
|
||||
private:
|
||||
u32 m_size { 0 };
|
||||
|
@ -913,7 +913,7 @@ public:
|
|||
|
||||
auto& functions() const { return m_functions; }
|
||||
|
||||
static ParseResult<CodeSection> parse(Core::Stream::Stream& stream);
|
||||
static ParseResult<CodeSection> parse(AK::Stream& stream);
|
||||
|
||||
private:
|
||||
Vector<Code> m_functions;
|
||||
|
@ -940,7 +940,7 @@ public:
|
|||
|
||||
auto& value() const { return m_value; }
|
||||
|
||||
static ParseResult<Data> parse(Core::Stream::Stream& stream);
|
||||
static ParseResult<Data> parse(AK::Stream& stream);
|
||||
|
||||
private:
|
||||
Value m_value;
|
||||
|
@ -955,7 +955,7 @@ public:
|
|||
|
||||
auto& data() const { return m_data; }
|
||||
|
||||
static ParseResult<DataSection> parse(Core::Stream::Stream& stream);
|
||||
static ParseResult<DataSection> parse(AK::Stream& stream);
|
||||
|
||||
private:
|
||||
Vector<Data> m_data;
|
||||
|
@ -972,7 +972,7 @@ public:
|
|||
|
||||
auto& count() const { return m_count; }
|
||||
|
||||
static ParseResult<DataCountSection> parse(Core::Stream::Stream& stream);
|
||||
static ParseResult<DataCountSection> parse(AK::Stream& stream);
|
||||
|
||||
private:
|
||||
Optional<u32> m_count;
|
||||
|
@ -1067,7 +1067,7 @@ public:
|
|||
StringView validation_error() const { return *m_validation_error; }
|
||||
void set_validation_error(DeprecatedString error) { m_validation_error = move(error); }
|
||||
|
||||
static ParseResult<Module> parse(Core::Stream::Stream& stream);
|
||||
static ParseResult<Module> parse(AK::Stream& stream);
|
||||
|
||||
private:
|
||||
bool populate_sections();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue