/src/WasmEdge/lib/loader/ast/component/component_value.cpp
Line | Count | Source |
1 | | // SPDX-License-Identifier: Apache-2.0 |
2 | | // SPDX-FileCopyrightText: 2019-2024 Second State INC |
3 | | |
4 | | #include "loader/loader.h" |
5 | | |
6 | | namespace WasmEdge { |
7 | | namespace Loader { |
8 | | |
9 | 16.4k | Expect<void> Loader::loadValue(AST::Component::Value &V) { |
10 | | // value ::= t:<valtype> len:<core:u32> v:<val(t)> => (value t v) |
11 | | // (where len = ||v||) |
12 | 16.4k | EXPECTED_TRY(loadType(V.getType()).map_error([this](auto E) { |
13 | 16.3k | return logLoadError(E, FMgr.getLastOffset(), ASTNodeAttr::Comp_Sec_Value); |
14 | 16.3k | })); |
15 | 32.7k | EXPECTED_TRY(uint32_t Len, FMgr.readU32().map_error([this](auto E) { |
16 | 32.7k | return logLoadError(E, FMgr.getLastOffset(), ASTNodeAttr::Comp_Sec_Value); |
17 | 32.7k | })); |
18 | 32.7k | EXPECTED_TRY(V.getData(), FMgr.readBytes(Len).map_error([this](auto E) { |
19 | 16.3k | return logLoadError(E, FMgr.getLastOffset(), ASTNodeAttr::Comp_Sec_Value); |
20 | 16.3k | })); |
21 | 16.3k | return {}; |
22 | 32.7k | } |
23 | | |
24 | | } // namespace Loader |
25 | | } // namespace WasmEdge |