Coverage Report

Created: 2025-07-01 06:18

/src/WasmEdge/include/runtime/instance/array.h
Line
Count
Source (jump to first uncovered line)
1
// SPDX-License-Identifier: Apache-2.0
2
// SPDX-FileCopyrightText: 2019-2024 Second State INC
3
4
//===-- wasmedge/runtime/instance/array.h - Array Instance definition -----===//
5
//
6
// Part of the WasmEdge Project.
7
//
8
//===----------------------------------------------------------------------===//
9
///
10
/// \file
11
/// This file contains the array instance definition in store manager.
12
///
13
//===----------------------------------------------------------------------===//
14
#pragma once
15
16
#include "ast/type.h"
17
#include "common/span.h"
18
#include "common/types.h"
19
#include "runtime/instance/composite.h"
20
21
#include <vector>
22
23
namespace WasmEdge {
24
namespace Runtime {
25
namespace Instance {
26
27
class ArrayInstance : public CompositeBase {
28
public:
29
  ArrayInstance() = delete;
30
  ArrayInstance(const ModuleInstance *Mod, const uint32_t Idx,
31
                const uint32_t Size, const ValVariant &Init) noexcept
32
0
      : CompositeBase(Mod, Idx), Data(Size, Init) {
33
0
    assuming(ModInst);
34
0
  }
35
  ArrayInstance(const ModuleInstance *Mod, const uint32_t Idx,
36
                std::vector<ValVariant> &&Init) noexcept
37
0
      : CompositeBase(Mod, Idx), Data(std::move(Init)) {
38
0
    assuming(ModInst);
39
0
  }
40
41
  /// Get field data in array instance.
42
0
  ValVariant &getData(uint32_t Idx) noexcept { return Data[Idx]; }
43
0
  const ValVariant &getData(uint32_t Idx) const noexcept { return Data[Idx]; }
44
45
  /// Get full array.
46
0
  Span<ValVariant> getArray() noexcept { return Data; }
47
0
  Span<const ValVariant> getArray() const noexcept { return Data; }
48
49
  /// Get array length.
50
0
  uint32_t getLength() const noexcept {
51
0
    return static_cast<uint32_t>(Data.size());
52
0
  }
53
54
  /// Get boundary index.
55
0
  uint32_t getBoundIdx() const noexcept {
56
0
    return std::max(static_cast<uint32_t>(Data.size()), UINT32_C(1)) -
57
0
           UINT32_C(1);
58
0
  }
59
60
private:
61
  /// \name Data of array instance.
62
  /// @{
63
  std::vector<ValVariant> Data;
64
  /// @}
65
};
66
67
} // namespace Instance
68
} // namespace Runtime
69
} // namespace WasmEdge