Coverage Report

Created: 2023-09-30 09:22

/Users/buildslave/jenkins/workspace/coverage/llvm-project/lldb/include/lldb/Interpreter/OptionValueRegex.h
Line
Count
Source (jump to first uncovered line)
1
//===-- OptionValueRegex.h --------------------------------------*- C++ -*-===//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8
9
#ifndef LLDB_INTERPRETER_OPTIONVALUEREGEX_H
10
#define LLDB_INTERPRETER_OPTIONVALUEREGEX_H
11
12
#include "lldb/Interpreter/OptionValue.h"
13
#include "lldb/Utility/RegularExpression.h"
14
15
namespace lldb_private {
16
17
class OptionValueRegex : public Cloneable<OptionValueRegex, OptionValue> {
18
public:
19
  OptionValueRegex(const char *value = nullptr)
20
3.92k
      : m_regex(value), m_default_regex_str(value) {}
21
22
0
  ~OptionValueRegex() override = default;
23
24
  // Virtual subclass pure virtual overrides
25
26
367
  OptionValue::Type GetType() const override { return eTypeRegex; }
27
28
  void DumpValue(const ExecutionContext *exe_ctx, Stream &strm,
29
                 uint32_t dump_mask) override;
30
31
2
  llvm::json::Value ToJSON(const ExecutionContext *exe_ctx) override {
32
2
    return m_regex.GetText();
33
2
  }
34
35
  Status
36
  SetValueFromString(llvm::StringRef value,
37
                     VarSetOperationType op = eVarSetOperationAssign) override;
38
39
3.16k
  void Clear() override {
40
3.16k
    m_regex = RegularExpression(m_default_regex_str);
41
3.16k
    m_value_was_set = false;
42
3.16k
  }
43
44
  // Subclass specific functions
45
280
  const RegularExpression *GetCurrentValue() const {
46
280
    return (m_regex.IsValid() ? &m_regex : 
nullptr0
);
47
280
  }
48
49
0
  void SetCurrentValue(const char *value) {
50
0
    if (value && value[0])
51
0
      m_regex = RegularExpression(llvm::StringRef(value));
52
0
    else
53
0
      m_regex = RegularExpression();
54
0
  }
55
56
0
  bool IsValid() const { return m_regex.IsValid(); }
57
58
protected:
59
  RegularExpression m_regex;
60
  std::string m_default_regex_str;
61
};
62
63
} // namespace lldb_private
64
65
#endif // LLDB_INTERPRETER_OPTIONVALUEREGEX_H