Coverage Report

Created: 2022-01-18 06:27

/Users/buildslave/jenkins/workspace/coverage/llvm-project/lldb/include/lldb/Interpreter/OptionGroupFormat.h
Line
Count
Source (jump to first uncovered line)
1
//===-- OptionGroupFormat.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_OPTIONGROUPFORMAT_H
10
#define LLDB_INTERPRETER_OPTIONGROUPFORMAT_H
11
12
#include "lldb/Interpreter/OptionValueFormat.h"
13
#include "lldb/Interpreter/OptionValueSInt64.h"
14
#include "lldb/Interpreter/OptionValueUInt64.h"
15
#include "lldb/Interpreter/Options.h"
16
17
namespace lldb_private {
18
19
typedef std::vector<std::tuple<lldb::CommandArgumentType, const char *>>
20
    OptionGroupFormatUsageTextVector;
21
22
// OptionGroupFormat
23
24
class OptionGroupFormat : public OptionGroup {
25
public:
26
  static const uint32_t OPTION_GROUP_FORMAT = LLDB_OPT_SET_1;
27
  static const uint32_t OPTION_GROUP_GDB_FMT = LLDB_OPT_SET_2;
28
  static const uint32_t OPTION_GROUP_SIZE = LLDB_OPT_SET_3;
29
  static const uint32_t OPTION_GROUP_COUNT = LLDB_OPT_SET_4;
30
31
  OptionGroupFormat(
32
      lldb::Format default_format,
33
      uint64_t default_byte_size =
34
          UINT64_MAX, // Pass UINT64_MAX to disable the "--size" option
35
      uint64_t default_count =
36
          UINT64_MAX, // Pass UINT64_MAX to disable the "--count" option
37
      OptionGroupFormatUsageTextVector usage_text_vector = {}
38
      // Use to override default option usage text with the command specific one
39
  );
40
41
47.5k
  ~OptionGroupFormat() override = default;
42
43
  llvm::ArrayRef<OptionDefinition> GetDefinitions() override;
44
45
  Status SetOptionValue(uint32_t option_idx, llvm::StringRef option_value,
46
                        ExecutionContext *execution_context) override;
47
48
  void OptionParsingStarting(ExecutionContext *execution_context) override;
49
50
17.8k
  lldb::Format GetFormat() const { return m_format.GetCurrentValue(); }
51
52
47
  OptionValueFormat &GetFormatValue() { return m_format; }
53
54
0
  const OptionValueFormat &GetFormatValue() const { return m_format; }
55
56
89
  OptionValueUInt64 &GetByteSizeValue() { return m_byte_size; }
57
58
0
  const OptionValueUInt64 &GetByteSizeValue() const { return m_byte_size; }
59
60
130
  OptionValueUInt64 &GetCountValue() { return m_count; }
61
62
0
  const OptionValueUInt64 &GetCountValue() const { return m_count; }
63
64
3
  bool HasGDBFormat() const { return m_has_gdb_format; }
65
66
0
  bool AnyOptionWasSet() const {
67
0
    return m_format.OptionWasSet() || m_byte_size.OptionWasSet() ||
68
0
           m_count.OptionWasSet();
69
0
  }
70
71
protected:
72
  bool ParserGDBFormatLetter(ExecutionContext *execution_context,
73
                             char format_letter, lldb::Format &format,
74
                             uint32_t &byte_size);
75
76
  OptionValueFormat m_format;
77
  OptionValueUInt64 m_byte_size;
78
  OptionValueUInt64 m_count;
79
  char m_prev_gdb_format;
80
  char m_prev_gdb_size;
81
  bool m_has_gdb_format;
82
  OptionDefinition m_option_definitions[4];
83
};
84
85
} // namespace lldb_private
86
87
#endif // LLDB_INTERPRETER_OPTIONGROUPFORMAT_H