Coverage Report

Created: 2026-11-12 06:35

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/WasmEdge/include/po/option.h
Line
Count
Source
1
// SPDX-License-Identifier: Apache-2.0
2
// SPDX-FileCopyrightText: Copyright The WasmEdge Authors
3
4
//===-- wasmedge/po/option.h - Option -------------------------------------===//
5
//
6
// Part of the WasmEdge Project.
7
//
8
//===----------------------------------------------------------------------===//
9
#pragma once
10
11
#include "po/helper.h"
12
#include "po/parser.h"
13
14
#include <cstdint>
15
#include <optional>
16
#include <string>
17
#include <type_traits>
18
19
namespace WasmEdge {
20
namespace PO {
21
22
struct Toggle {};
23
24
template <typename T, typename ParserT = Parser<std::conditional_t<
25
                          std::is_same_v<std::remove_pointer_t<T>, Toggle>,
26
                          bool, std::remove_pointer_t<T>>>>
27
class Option;
28
29
template <typename T> class Option<T, Parser<T>> {
30
public:
31
3.22k
  Option() noexcept {}
WasmEdge::PO::Option<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, WasmEdge::PO::Parser<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >::Option()
Line
Count
Source
31
1.61k
  Option() noexcept {}
WasmEdge::PO::Option<unsigned long, WasmEdge::PO::Parser<unsigned long> >::Option()
Line
Count
Source
31
1.61k
  Option() noexcept {}
32
33
  template <typename... ArgsT>
34
  Option(Description &&D, ArgsT &&...Args) noexcept
35
3.22k
      : Option(std::forward<ArgsT>(Args)...) {
36
3.22k
    Desc = std::move(D.Value);
37
3.22k
  }
WasmEdge::PO::Option<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, WasmEdge::PO::Parser<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >::Option<WasmEdge::PO::MetaVar>(WasmEdge::PO::Description&&, WasmEdge::PO::MetaVar&&)
Line
Count
Source
35
1.61k
      : Option(std::forward<ArgsT>(Args)...) {
36
1.61k
    Desc = std::move(D.Value);
37
1.61k
  }
WasmEdge::PO::Option<unsigned long, WasmEdge::PO::Parser<unsigned long> >::Option<WasmEdge::PO::MetaVar, WasmEdge::PO::DefaultValue<unsigned long> >(WasmEdge::PO::Description&&, WasmEdge::PO::MetaVar&&, WasmEdge::PO::DefaultValue<unsigned long>&&)
Line
Count
Source
35
1.61k
      : Option(std::forward<ArgsT>(Args)...) {
36
1.61k
    Desc = std::move(D.Value);
37
1.61k
  }
Unexecuted instantiation: WasmEdge::PO::Option<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, WasmEdge::PO::Parser<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >::Option<WasmEdge::PO::MetaVar, WasmEdge::PO::DefaultValue<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >(WasmEdge::PO::Description&&, WasmEdge::PO::MetaVar&&, WasmEdge::PO::DefaultValue<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >&&)
Unexecuted instantiation: WasmEdge::PO::Option<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, WasmEdge::PO::Parser<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >::Option<WasmEdge::PO::DefaultValue<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >(WasmEdge::PO::Description&&, WasmEdge::PO::DefaultValue<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >&&)
38
39
  template <typename... ArgsT>
40
  Option(MetaVar &&M, ArgsT &&...Args) noexcept
41
3.22k
      : Option(std::forward<ArgsT>(Args)...) {
42
3.22k
    Meta = std::move(M.Value);
43
3.22k
  }
WasmEdge::PO::Option<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, WasmEdge::PO::Parser<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >::Option<>(WasmEdge::PO::MetaVar&&)
Line
Count
Source
41
1.61k
      : Option(std::forward<ArgsT>(Args)...) {
42
1.61k
    Meta = std::move(M.Value);
43
1.61k
  }
WasmEdge::PO::Option<unsigned long, WasmEdge::PO::Parser<unsigned long> >::Option<WasmEdge::PO::DefaultValue<unsigned long> >(WasmEdge::PO::MetaVar&&, WasmEdge::PO::DefaultValue<unsigned long>&&)
Line
Count
Source
41
1.61k
      : Option(std::forward<ArgsT>(Args)...) {
42
1.61k
    Meta = std::move(M.Value);
43
1.61k
  }
Unexecuted instantiation: WasmEdge::PO::Option<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, WasmEdge::PO::Parser<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >::Option<WasmEdge::PO::DefaultValue<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >(WasmEdge::PO::MetaVar&&, WasmEdge::PO::DefaultValue<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >&&)
44
45
  template <typename... ArgsT>
46
  Option(DefaultValue<T> &&V, ArgsT &&...Args) noexcept
47
1.61k
      : Option(std::forward<ArgsT>(Args)...) {
48
1.61k
    Default.emplace(std::move(V.Value));
49
1.61k
  }
WasmEdge::PO::Option<unsigned long, WasmEdge::PO::Parser<unsigned long> >::Option<>(WasmEdge::PO::DefaultValue<unsigned long>&&)
Line
Count
Source
47
1.61k
      : Option(std::forward<ArgsT>(Args)...) {
48
1.61k
    Default.emplace(std::move(V.Value));
49
1.61k
  }
Unexecuted instantiation: WasmEdge::PO::Option<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, WasmEdge::PO::Parser<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >::Option<>(WasmEdge::PO::DefaultValue<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >&&)
50
51
  template <typename... ArgsT>
52
  Option(Hidden &&, ArgsT &&...Args) noexcept
53
      : Option(std::forward<ArgsT>(Args)...) {
54
    Hidden = true;
55
  }
56
57
3.22k
  std::string_view description() const noexcept { return Desc; }
WasmEdge::PO::Option<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, WasmEdge::PO::Parser<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >::description() const
Line
Count
Source
57
1.61k
  std::string_view description() const noexcept { return Desc; }
WasmEdge::PO::Option<unsigned long, WasmEdge::PO::Parser<unsigned long> >::description() const
Line
Count
Source
57
1.61k
  std::string_view description() const noexcept { return Desc; }
58
59
3.22k
  std::string_view meta() const noexcept { return Meta; }
WasmEdge::PO::Option<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, WasmEdge::PO::Parser<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >::meta() const
Line
Count
Source
59
1.61k
  std::string_view meta() const noexcept { return Meta; }
WasmEdge::PO::Option<unsigned long, WasmEdge::PO::Parser<unsigned long> >::meta() const
Line
Count
Source
59
1.61k
  std::string_view meta() const noexcept { return Meta; }
60
61
3.22k
  bool hidden() const noexcept { return Hidden; }
WasmEdge::PO::Option<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, WasmEdge::PO::Parser<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >::hidden() const
Line
Count
Source
61
1.61k
  bool hidden() const noexcept { return Hidden; }
WasmEdge::PO::Option<unsigned long, WasmEdge::PO::Parser<unsigned long> >::hidden() const
Line
Count
Source
61
1.61k
  bool hidden() const noexcept { return Hidden; }
62
63
3.22k
  std::size_t min_narg() const noexcept { return Default.has_value() ? 0 : 1; }
WasmEdge::PO::Option<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, WasmEdge::PO::Parser<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >::min_narg() const
Line
Count
Source
63
1.61k
  std::size_t min_narg() const noexcept { return Default.has_value() ? 0 : 1; }
WasmEdge::PO::Option<unsigned long, WasmEdge::PO::Parser<unsigned long> >::min_narg() const
Line
Count
Source
63
1.61k
  std::size_t min_narg() const noexcept { return Default.has_value() ? 0 : 1; }
64
65
3.22k
  std::size_t max_narg() const noexcept { return 1; }
WasmEdge::PO::Option<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, WasmEdge::PO::Parser<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >::max_narg() const
Line
Count
Source
65
1.61k
  std::size_t max_narg() const noexcept { return 1; }
WasmEdge::PO::Option<unsigned long, WasmEdge::PO::Parser<unsigned long> >::max_narg() const
Line
Count
Source
65
1.61k
  std::size_t max_narg() const noexcept { return 1; }
66
67
0
  const T &value() const noexcept { return Store; }
68
3.22k
  T &value() noexcept { return Store; }
WasmEdge::PO::Option<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, WasmEdge::PO::Parser<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >::value()
Line
Count
Source
68
1.61k
  T &value() noexcept { return Store; }
WasmEdge::PO::Option<unsigned long, WasmEdge::PO::Parser<unsigned long> >::value()
Line
Count
Source
68
1.61k
  T &value() noexcept { return Store; }
69
70
393
  void default_argument() noexcept { Store = *Default; }
Unexecuted instantiation: WasmEdge::PO::Option<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, WasmEdge::PO::Parser<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >::default_argument()
WasmEdge::PO::Option<unsigned long, WasmEdge::PO::Parser<unsigned long> >::default_argument()
Line
Count
Source
70
393
  void default_argument() noexcept { Store = *Default; }
71
72
34.8k
  cxx20::expected<void, Error> argument(std::string Argument) noexcept {
73
34.8k
    if (auto Res = Parser<T>::parse(std::move(Argument)); !Res) {
74
54
      return cxx20::unexpected(Res.error());
75
34.8k
    } else {
76
34.8k
      Store = std::move(*Res);
77
34.8k
    }
78
34.8k
    return {};
79
34.8k
  }
WasmEdge::PO::Option<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, WasmEdge::PO::Parser<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >::argument(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)
Line
Count
Source
72
463
  cxx20::expected<void, Error> argument(std::string Argument) noexcept {
73
463
    if (auto Res = Parser<T>::parse(std::move(Argument)); !Res) {
74
0
      return cxx20::unexpected(Res.error());
75
463
    } else {
76
463
      Store = std::move(*Res);
77
463
    }
78
463
    return {};
79
463
  }
WasmEdge::PO::Option<unsigned long, WasmEdge::PO::Parser<unsigned long> >::argument(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)
Line
Count
Source
72
34.3k
  cxx20::expected<void, Error> argument(std::string Argument) noexcept {
73
34.3k
    if (auto Res = Parser<T>::parse(std::move(Argument)); !Res) {
74
54
      return cxx20::unexpected(Res.error());
75
34.3k
    } else {
76
34.3k
      Store = std::move(*Res);
77
34.3k
    }
78
34.3k
    return {};
79
34.3k
  }
80
81
private:
82
  T Store{};
83
  std::optional<T> Default{};
84
  std::string_view Desc{};
85
  std::string_view Meta{};
86
  bool Hidden = false;
87
};
88
89
/// External storage
90
template <typename T> class Option<T *, Parser<T>> {
91
public:
92
  Option(T *Storage, const T *DefaultValue) noexcept
93
0
      : Store(Storage), Default(DefaultValue) {}
Unexecuted instantiation: WasmEdge::PO::Option<signed char*, WasmEdge::PO::Parser<signed char> >::Option(signed char*, signed char const*)
Unexecuted instantiation: WasmEdge::PO::Option<short*, WasmEdge::PO::Parser<short> >::Option(short*, short const*)
Unexecuted instantiation: WasmEdge::PO::Option<int*, WasmEdge::PO::Parser<int> >::Option(int*, int const*)
Unexecuted instantiation: WasmEdge::PO::Option<long*, WasmEdge::PO::Parser<long> >::Option(long*, long const*)
Unexecuted instantiation: WasmEdge::PO::Option<unsigned char*, WasmEdge::PO::Parser<unsigned char> >::Option(unsigned char*, unsigned char const*)
Unexecuted instantiation: WasmEdge::PO::Option<unsigned short*, WasmEdge::PO::Parser<unsigned short> >::Option(unsigned short*, unsigned short const*)
Unexecuted instantiation: WasmEdge::PO::Option<unsigned int*, WasmEdge::PO::Parser<unsigned int> >::Option(unsigned int*, unsigned int const*)
Unexecuted instantiation: WasmEdge::PO::Option<unsigned long*, WasmEdge::PO::Parser<unsigned long> >::Option(unsigned long*, unsigned long const*)
Unexecuted instantiation: WasmEdge::PO::Option<float*, WasmEdge::PO::Parser<float> >::Option(float*, float const*)
Unexecuted instantiation: WasmEdge::PO::Option<double*, WasmEdge::PO::Parser<double> >::Option(double*, double const*)
Unexecuted instantiation: WasmEdge::PO::Option<WasmEdge_String*, WasmEdge::PO::Parser<WasmEdge_String> >::Option(WasmEdge_String*, WasmEdge_String const*)
94
95
  template <typename... ArgsT>
96
  Option(Description &&D, ArgsT &&...Args) noexcept
97
0
      : Option(std::forward<ArgsT>(Args)...) {
98
0
    Desc = std::move(D.Value);
99
0
  }
Unexecuted instantiation: WasmEdge::PO::Option<signed char*, WasmEdge::PO::Parser<signed char> >::Option<signed char*, signed char const*>(WasmEdge::PO::Description&&, signed char*&&, signed char const*&&)
Unexecuted instantiation: WasmEdge::PO::Option<short*, WasmEdge::PO::Parser<short> >::Option<short*, short const*>(WasmEdge::PO::Description&&, short*&&, short const*&&)
Unexecuted instantiation: WasmEdge::PO::Option<int*, WasmEdge::PO::Parser<int> >::Option<int*, int const*>(WasmEdge::PO::Description&&, int*&&, int const*&&)
Unexecuted instantiation: WasmEdge::PO::Option<long*, WasmEdge::PO::Parser<long> >::Option<long*, long const*>(WasmEdge::PO::Description&&, long*&&, long const*&&)
Unexecuted instantiation: WasmEdge::PO::Option<unsigned char*, WasmEdge::PO::Parser<unsigned char> >::Option<unsigned char*, unsigned char const*>(WasmEdge::PO::Description&&, unsigned char*&&, unsigned char const*&&)
Unexecuted instantiation: WasmEdge::PO::Option<unsigned short*, WasmEdge::PO::Parser<unsigned short> >::Option<unsigned short*, unsigned short const*>(WasmEdge::PO::Description&&, unsigned short*&&, unsigned short const*&&)
Unexecuted instantiation: WasmEdge::PO::Option<unsigned int*, WasmEdge::PO::Parser<unsigned int> >::Option<unsigned int*, unsigned int const*>(WasmEdge::PO::Description&&, unsigned int*&&, unsigned int const*&&)
Unexecuted instantiation: WasmEdge::PO::Option<unsigned long*, WasmEdge::PO::Parser<unsigned long> >::Option<unsigned long*, unsigned long const*>(WasmEdge::PO::Description&&, unsigned long*&&, unsigned long const*&&)
Unexecuted instantiation: WasmEdge::PO::Option<float*, WasmEdge::PO::Parser<float> >::Option<float*, float const*>(WasmEdge::PO::Description&&, float*&&, float const*&&)
Unexecuted instantiation: WasmEdge::PO::Option<double*, WasmEdge::PO::Parser<double> >::Option<double*, double const*>(WasmEdge::PO::Description&&, double*&&, double const*&&)
Unexecuted instantiation: WasmEdge::PO::Option<WasmEdge_String*, WasmEdge::PO::Parser<WasmEdge_String> >::Option<WasmEdge_String*, WasmEdge_String const*>(WasmEdge::PO::Description&&, WasmEdge_String*&&, WasmEdge_String const*&&)
100
101
  template <typename... ArgsT>
102
  Option(MetaVar &&M, ArgsT &&...Args) noexcept
103
      : Option(std::forward<ArgsT>(Args)...) {
104
    Meta = std::move(M.Value);
105
  }
106
107
  template <typename... ArgsT>
108
  Option(Hidden &&, ArgsT &&...Args) noexcept
109
      : Option(std::forward<ArgsT>(Args)...) {
110
    Hidden = true;
111
  }
112
113
0
  std::string_view description() const noexcept { return Desc; }
Unexecuted instantiation: WasmEdge::PO::Option<signed char*, WasmEdge::PO::Parser<signed char> >::description() const
Unexecuted instantiation: WasmEdge::PO::Option<short*, WasmEdge::PO::Parser<short> >::description() const
Unexecuted instantiation: WasmEdge::PO::Option<int*, WasmEdge::PO::Parser<int> >::description() const
Unexecuted instantiation: WasmEdge::PO::Option<long*, WasmEdge::PO::Parser<long> >::description() const
Unexecuted instantiation: WasmEdge::PO::Option<unsigned char*, WasmEdge::PO::Parser<unsigned char> >::description() const
Unexecuted instantiation: WasmEdge::PO::Option<unsigned short*, WasmEdge::PO::Parser<unsigned short> >::description() const
Unexecuted instantiation: WasmEdge::PO::Option<unsigned int*, WasmEdge::PO::Parser<unsigned int> >::description() const
Unexecuted instantiation: WasmEdge::PO::Option<unsigned long*, WasmEdge::PO::Parser<unsigned long> >::description() const
Unexecuted instantiation: WasmEdge::PO::Option<float*, WasmEdge::PO::Parser<float> >::description() const
Unexecuted instantiation: WasmEdge::PO::Option<double*, WasmEdge::PO::Parser<double> >::description() const
Unexecuted instantiation: WasmEdge::PO::Option<WasmEdge_String*, WasmEdge::PO::Parser<WasmEdge_String> >::description() const
114
115
0
  std::string_view meta() const noexcept { return Meta; }
Unexecuted instantiation: WasmEdge::PO::Option<signed char*, WasmEdge::PO::Parser<signed char> >::meta() const
Unexecuted instantiation: WasmEdge::PO::Option<short*, WasmEdge::PO::Parser<short> >::meta() const
Unexecuted instantiation: WasmEdge::PO::Option<int*, WasmEdge::PO::Parser<int> >::meta() const
Unexecuted instantiation: WasmEdge::PO::Option<long*, WasmEdge::PO::Parser<long> >::meta() const
Unexecuted instantiation: WasmEdge::PO::Option<unsigned char*, WasmEdge::PO::Parser<unsigned char> >::meta() const
Unexecuted instantiation: WasmEdge::PO::Option<unsigned short*, WasmEdge::PO::Parser<unsigned short> >::meta() const
Unexecuted instantiation: WasmEdge::PO::Option<unsigned int*, WasmEdge::PO::Parser<unsigned int> >::meta() const
Unexecuted instantiation: WasmEdge::PO::Option<unsigned long*, WasmEdge::PO::Parser<unsigned long> >::meta() const
Unexecuted instantiation: WasmEdge::PO::Option<float*, WasmEdge::PO::Parser<float> >::meta() const
Unexecuted instantiation: WasmEdge::PO::Option<double*, WasmEdge::PO::Parser<double> >::meta() const
Unexecuted instantiation: WasmEdge::PO::Option<WasmEdge_String*, WasmEdge::PO::Parser<WasmEdge_String> >::meta() const
116
117
0
  bool hidden() const noexcept { return Hidden; }
Unexecuted instantiation: WasmEdge::PO::Option<signed char*, WasmEdge::PO::Parser<signed char> >::hidden() const
Unexecuted instantiation: WasmEdge::PO::Option<short*, WasmEdge::PO::Parser<short> >::hidden() const
Unexecuted instantiation: WasmEdge::PO::Option<int*, WasmEdge::PO::Parser<int> >::hidden() const
Unexecuted instantiation: WasmEdge::PO::Option<long*, WasmEdge::PO::Parser<long> >::hidden() const
Unexecuted instantiation: WasmEdge::PO::Option<unsigned char*, WasmEdge::PO::Parser<unsigned char> >::hidden() const
Unexecuted instantiation: WasmEdge::PO::Option<unsigned short*, WasmEdge::PO::Parser<unsigned short> >::hidden() const
Unexecuted instantiation: WasmEdge::PO::Option<unsigned int*, WasmEdge::PO::Parser<unsigned int> >::hidden() const
Unexecuted instantiation: WasmEdge::PO::Option<unsigned long*, WasmEdge::PO::Parser<unsigned long> >::hidden() const
Unexecuted instantiation: WasmEdge::PO::Option<float*, WasmEdge::PO::Parser<float> >::hidden() const
Unexecuted instantiation: WasmEdge::PO::Option<double*, WasmEdge::PO::Parser<double> >::hidden() const
Unexecuted instantiation: WasmEdge::PO::Option<WasmEdge_String*, WasmEdge::PO::Parser<WasmEdge_String> >::hidden() const
118
119
0
  std::size_t min_narg() const noexcept { return Default != nullptr ? 0 : 1; }
Unexecuted instantiation: WasmEdge::PO::Option<signed char*, WasmEdge::PO::Parser<signed char> >::min_narg() const
Unexecuted instantiation: WasmEdge::PO::Option<short*, WasmEdge::PO::Parser<short> >::min_narg() const
Unexecuted instantiation: WasmEdge::PO::Option<int*, WasmEdge::PO::Parser<int> >::min_narg() const
Unexecuted instantiation: WasmEdge::PO::Option<long*, WasmEdge::PO::Parser<long> >::min_narg() const
Unexecuted instantiation: WasmEdge::PO::Option<unsigned char*, WasmEdge::PO::Parser<unsigned char> >::min_narg() const
Unexecuted instantiation: WasmEdge::PO::Option<unsigned short*, WasmEdge::PO::Parser<unsigned short> >::min_narg() const
Unexecuted instantiation: WasmEdge::PO::Option<unsigned int*, WasmEdge::PO::Parser<unsigned int> >::min_narg() const
Unexecuted instantiation: WasmEdge::PO::Option<unsigned long*, WasmEdge::PO::Parser<unsigned long> >::min_narg() const
Unexecuted instantiation: WasmEdge::PO::Option<float*, WasmEdge::PO::Parser<float> >::min_narg() const
Unexecuted instantiation: WasmEdge::PO::Option<double*, WasmEdge::PO::Parser<double> >::min_narg() const
Unexecuted instantiation: WasmEdge::PO::Option<WasmEdge_String*, WasmEdge::PO::Parser<WasmEdge_String> >::min_narg() const
120
121
0
  std::size_t max_narg() const noexcept { return 1; }
Unexecuted instantiation: WasmEdge::PO::Option<signed char*, WasmEdge::PO::Parser<signed char> >::max_narg() const
Unexecuted instantiation: WasmEdge::PO::Option<short*, WasmEdge::PO::Parser<short> >::max_narg() const
Unexecuted instantiation: WasmEdge::PO::Option<int*, WasmEdge::PO::Parser<int> >::max_narg() const
Unexecuted instantiation: WasmEdge::PO::Option<long*, WasmEdge::PO::Parser<long> >::max_narg() const
Unexecuted instantiation: WasmEdge::PO::Option<unsigned char*, WasmEdge::PO::Parser<unsigned char> >::max_narg() const
Unexecuted instantiation: WasmEdge::PO::Option<unsigned short*, WasmEdge::PO::Parser<unsigned short> >::max_narg() const
Unexecuted instantiation: WasmEdge::PO::Option<unsigned int*, WasmEdge::PO::Parser<unsigned int> >::max_narg() const
Unexecuted instantiation: WasmEdge::PO::Option<unsigned long*, WasmEdge::PO::Parser<unsigned long> >::max_narg() const
Unexecuted instantiation: WasmEdge::PO::Option<float*, WasmEdge::PO::Parser<float> >::max_narg() const
Unexecuted instantiation: WasmEdge::PO::Option<double*, WasmEdge::PO::Parser<double> >::max_narg() const
Unexecuted instantiation: WasmEdge::PO::Option<WasmEdge_String*, WasmEdge::PO::Parser<WasmEdge_String> >::max_narg() const
122
123
  const T &value() const noexcept { return *Store; }
124
0
  T &value() noexcept { return *Store; }
Unexecuted instantiation: WasmEdge::PO::Option<signed char*, WasmEdge::PO::Parser<signed char> >::value()
Unexecuted instantiation: WasmEdge::PO::Option<short*, WasmEdge::PO::Parser<short> >::value()
Unexecuted instantiation: WasmEdge::PO::Option<int*, WasmEdge::PO::Parser<int> >::value()
Unexecuted instantiation: WasmEdge::PO::Option<long*, WasmEdge::PO::Parser<long> >::value()
Unexecuted instantiation: WasmEdge::PO::Option<unsigned char*, WasmEdge::PO::Parser<unsigned char> >::value()
Unexecuted instantiation: WasmEdge::PO::Option<unsigned short*, WasmEdge::PO::Parser<unsigned short> >::value()
Unexecuted instantiation: WasmEdge::PO::Option<unsigned int*, WasmEdge::PO::Parser<unsigned int> >::value()
Unexecuted instantiation: WasmEdge::PO::Option<unsigned long*, WasmEdge::PO::Parser<unsigned long> >::value()
Unexecuted instantiation: WasmEdge::PO::Option<float*, WasmEdge::PO::Parser<float> >::value()
Unexecuted instantiation: WasmEdge::PO::Option<double*, WasmEdge::PO::Parser<double> >::value()
Unexecuted instantiation: WasmEdge::PO::Option<WasmEdge_String*, WasmEdge::PO::Parser<WasmEdge_String> >::value()
125
126
0
  void default_argument() noexcept { *Store = *Default; }
Unexecuted instantiation: WasmEdge::PO::Option<signed char*, WasmEdge::PO::Parser<signed char> >::default_argument()
Unexecuted instantiation: WasmEdge::PO::Option<short*, WasmEdge::PO::Parser<short> >::default_argument()
Unexecuted instantiation: WasmEdge::PO::Option<int*, WasmEdge::PO::Parser<int> >::default_argument()
Unexecuted instantiation: WasmEdge::PO::Option<long*, WasmEdge::PO::Parser<long> >::default_argument()
Unexecuted instantiation: WasmEdge::PO::Option<unsigned char*, WasmEdge::PO::Parser<unsigned char> >::default_argument()
Unexecuted instantiation: WasmEdge::PO::Option<unsigned short*, WasmEdge::PO::Parser<unsigned short> >::default_argument()
Unexecuted instantiation: WasmEdge::PO::Option<unsigned int*, WasmEdge::PO::Parser<unsigned int> >::default_argument()
Unexecuted instantiation: WasmEdge::PO::Option<unsigned long*, WasmEdge::PO::Parser<unsigned long> >::default_argument()
Unexecuted instantiation: WasmEdge::PO::Option<float*, WasmEdge::PO::Parser<float> >::default_argument()
Unexecuted instantiation: WasmEdge::PO::Option<double*, WasmEdge::PO::Parser<double> >::default_argument()
Unexecuted instantiation: WasmEdge::PO::Option<WasmEdge_String*, WasmEdge::PO::Parser<WasmEdge_String> >::default_argument()
127
128
0
  cxx20::expected<void, Error> argument(std::string Argument) noexcept {
129
0
    if (auto Res = Parser<T>::parse(std::move(Argument)); !Res) {
130
0
      return cxx20::unexpected(Res.error());
131
0
    } else {
132
0
      *Store = std::move(*Res);
133
0
    }
134
0
    return {};
135
0
  }
Unexecuted instantiation: WasmEdge::PO::Option<signed char*, WasmEdge::PO::Parser<signed char> >::argument(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)
Unexecuted instantiation: WasmEdge::PO::Option<short*, WasmEdge::PO::Parser<short> >::argument(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)
Unexecuted instantiation: WasmEdge::PO::Option<int*, WasmEdge::PO::Parser<int> >::argument(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)
Unexecuted instantiation: WasmEdge::PO::Option<long*, WasmEdge::PO::Parser<long> >::argument(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)
Unexecuted instantiation: WasmEdge::PO::Option<unsigned char*, WasmEdge::PO::Parser<unsigned char> >::argument(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)
Unexecuted instantiation: WasmEdge::PO::Option<unsigned short*, WasmEdge::PO::Parser<unsigned short> >::argument(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)
Unexecuted instantiation: WasmEdge::PO::Option<unsigned int*, WasmEdge::PO::Parser<unsigned int> >::argument(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)
Unexecuted instantiation: WasmEdge::PO::Option<unsigned long*, WasmEdge::PO::Parser<unsigned long> >::argument(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)
Unexecuted instantiation: WasmEdge::PO::Option<float*, WasmEdge::PO::Parser<float> >::argument(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)
Unexecuted instantiation: WasmEdge::PO::Option<double*, WasmEdge::PO::Parser<double> >::argument(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)
Unexecuted instantiation: WasmEdge::PO::Option<WasmEdge_String*, WasmEdge::PO::Parser<WasmEdge_String> >::argument(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)
136
137
private:
138
  T *Store;
139
  const T *Default;
140
  std::string_view Desc{};
141
  std::string_view Meta{};
142
  bool Hidden = false;
143
};
144
145
template <> class Option<Toggle, Parser<bool>> {
146
public:
147
43.4k
  Option() {}
148
149
  template <typename... ArgsT>
150
  Option(Description &&D, ArgsT &&...Args) noexcept
151
43.4k
      : Option(std::forward<ArgsT>(Args)...) {
152
43.4k
    Desc = std::move(D.Value);
153
43.4k
  }
154
155
  template <typename... ArgsT>
156
  Option(Hidden &&, ArgsT &&...Args) noexcept
157
      : Option(std::forward<ArgsT>(Args)...) {
158
    Hidden = true;
159
  }
160
161
37.0k
  std::string_view description() const noexcept { return Desc; }
162
163
37.0k
  std::string_view meta() const noexcept { return {}; }
164
165
37.0k
  bool hidden() const noexcept { return Hidden; }
166
167
37.0k
  std::size_t min_narg() const noexcept { return 0; }
168
169
37.0k
  std::size_t max_narg() const noexcept { return 0; }
170
171
672
  const bool &value() const noexcept { return Store; }
172
39.8k
  bool &value() noexcept { return Store; }
173
174
155k
  void default_argument() noexcept { Store = true; }
175
176
0
  cxx20::expected<void, Error> argument(std::string Argument) noexcept {
177
0
    if (auto Res = Parser<bool>::parse(std::move(Argument)); !Res) {
178
0
      return cxx20::unexpected(Res.error());
179
0
    } else {
180
0
      Store = std::move(*Res);
181
0
    }
182
0
    return {};
183
0
  }
184
185
private:
186
  bool Store = false;
187
  std::string_view Desc{};
188
  bool Hidden = false;
189
};
190
191
template <> class Option<Toggle *, Parser<bool>> {
192
public:
193
0
  Option(bool *Storage, const bool *) noexcept : Store(Storage) {}
194
195
  template <typename... ArgsT>
196
  Option(Description &&D, ArgsT &&...Args) noexcept
197
0
      : Option(std::forward<ArgsT>(Args)...) {
198
0
    Desc = std::move(D.Value);
199
0
  }
200
201
  template <typename... ArgsT>
202
  Option(Hidden &&, ArgsT &&...Args) noexcept
203
      : Option(std::forward<ArgsT>(Args)...) {
204
    Hidden = true;
205
  }
206
207
0
  std::string_view description() const noexcept { return Desc; }
208
209
0
  std::string_view meta() const noexcept { return {}; }
210
211
0
  bool hidden() const noexcept { return Hidden; }
212
213
0
  std::size_t min_narg() const noexcept { return 0; }
214
215
0
  std::size_t max_narg() const noexcept { return 0; }
216
217
0
  const bool &value() const noexcept { return *Store; }
218
0
  bool &value() noexcept { return *Store; }
219
220
0
  void default_argument() noexcept { *Store = true; }
221
222
0
  cxx20::expected<void, Error> argument(std::string Argument) noexcept {
223
0
    if (auto Res = Parser<bool>::parse(std::move(Argument)); !Res) {
224
0
      return cxx20::unexpected(Res.error());
225
0
    } else {
226
0
      *Store = std::move(*Res);
227
0
    }
228
0
    return {};
229
0
  }
230
231
private:
232
  bool *Store;
233
  std::string_view Desc{};
234
  bool Hidden = false;
235
};
236
237
} // namespace PO
238
} // namespace WasmEdge