Coverage Report

Created: 2026-09-28 06:22

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/WasmEdge/lib/loader/serialize/serial_description.cpp
Line
Count
Source
1
// SPDX-License-Identifier: Apache-2.0
2
// SPDX-FileCopyrightText: Copyright The WasmEdge Authors
3
4
#include "loader/serialize.h"
5
6
namespace WasmEdge {
7
namespace Loader {
8
9
// Serialize import description. See "include/loader/serialize.h".
10
void Serializer::serializeDesc(const AST::ImportDesc &Desc,
11
0
                               std::vector<uint8_t> &OutVec) const noexcept {
12
  // Import description: modname:vec(byte) + extname:vec(byte) + importdesc
13
  // Module name: vec(byte).
14
0
  serializeU32(static_cast<uint32_t>(Desc.getModuleName().size()), OutVec);
15
0
  OutVec.insert(OutVec.end(), Desc.getModuleName().begin(),
16
0
                Desc.getModuleName().end());
17
  // External name: vec(byte).
18
0
  serializeU32(static_cast<uint32_t>(Desc.getExternalName().size()), OutVec);
19
0
  OutVec.insert(OutVec.end(), Desc.getExternalName().begin(),
20
0
                Desc.getExternalName().end());
21
22
  // Import Desc: extern_type:byte + content:idx|tabletype|memorytype|globaltype
23
0
  OutVec.push_back(static_cast<uint8_t>(Desc.getExternalType()));
24
0
  switch (Desc.getExternalType()) {
25
0
  case ExternalType::Function:
26
0
    serializeU32(Desc.getExternalFuncTypeIdx(), OutVec);
27
0
    return;
28
0
  case ExternalType::Table:
29
0
    return serializeType(Desc.getExternalTableType(), OutVec);
30
0
  case ExternalType::Memory:
31
0
    return serializeType(Desc.getExternalMemoryType(), OutVec);
32
0
  case ExternalType::Global:
33
0
    return serializeType(Desc.getExternalGlobalType(), OutVec);
34
0
  case ExternalType::Tag:
35
0
    return serializeType(Desc.getExternalTagType(), OutVec);
36
0
  default:
37
0
    assumingUnreachable();
38
0
  }
39
0
}
40
41
// Serialize export description. See "include/loader/serialize.h".
42
void Serializer::serializeDesc(const AST::ExportDesc &Desc,
43
0
                               std::vector<uint8_t> &OutVec) const noexcept {
44
  // Export description: extname:vec(byte) + exportdesc
45
  // External name: vec(byte).
46
0
  serializeU32(static_cast<uint32_t>(Desc.getExternalName().size()), OutVec);
47
0
  OutVec.insert(OutVec.end(), Desc.getExternalName().begin(),
48
0
                Desc.getExternalName().end());
49
  // Export Desc: extern_type:byte + idx:u32.
50
0
  OutVec.push_back(static_cast<uint8_t>(Desc.getExternalType()));
51
0
  serializeU32(Desc.getExternalIndex(), OutVec);
52
0
}
53
54
} // namespace Loader
55
} // namespace WasmEdge