Coverage Report

Created: 2022-01-15 10:30

/Users/buildslave/jenkins/workspace/coverage/llvm-project/lldb/include/lldb/Core/UserSettingsController.h
Line
Count
Source
1
//====-- UserSettingsController.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_CORE_USERSETTINGSCONTROLLER_H
10
#define LLDB_CORE_USERSETTINGSCONTROLLER_H
11
12
#include "lldb/Utility/Status.h"
13
#include "lldb/lldb-forward.h"
14
#include "lldb/lldb-private-enumerations.h"
15
16
#include "llvm/ADT/StringRef.h"
17
18
#include <vector>
19
20
#include <cstddef>
21
#include <cstdint>
22
23
namespace lldb_private {
24
class CommandInterpreter;
25
class ConstString;
26
class ExecutionContext;
27
class Property;
28
class Stream;
29
}
30
31
namespace lldb_private {
32
33
class Properties {
34
public:
35
59.6k
  Properties() = default;
36
37
  Properties(const lldb::OptionValuePropertiesSP &collection_sp)
38
30.7k
      : m_collection_sp(collection_sp) {}
39
40
69.2k
  virtual ~Properties() = default;
41
42
241k
  virtual lldb::OptionValuePropertiesSP GetValueProperties() const {
43
    // This function is virtual in case subclasses want to lazily implement
44
    // creating the properties.
45
241k
    return m_collection_sp;
46
241k
  }
47
48
  virtual lldb::OptionValueSP GetPropertyValue(const ExecutionContext *exe_ctx,
49
                                               llvm::StringRef property_path,
50
                                               bool will_modify,
51
                                               Status &error) const;
52
53
  virtual Status SetPropertyValue(const ExecutionContext *exe_ctx,
54
                                  VarSetOperationType op,
55
                                  llvm::StringRef property_path,
56
                                  llvm::StringRef value);
57
58
  virtual Status DumpPropertyValue(const ExecutionContext *exe_ctx,
59
                                   Stream &strm, llvm::StringRef property_path,
60
                                   uint32_t dump_mask);
61
62
  virtual void DumpAllPropertyValues(const ExecutionContext *exe_ctx,
63
                                     Stream &strm, uint32_t dump_mask);
64
65
  virtual void DumpAllDescriptions(CommandInterpreter &interpreter,
66
                                   Stream &strm) const;
67
68
  size_t Apropos(llvm::StringRef keyword,
69
                 std::vector<const Property *> &matching_properties) const;
70
71
  lldb::OptionValuePropertiesSP GetSubProperty(const ExecutionContext *exe_ctx,
72
                                               ConstString name);
73
74
  // We sometimes need to introduce a setting to enable experimental features,
75
  // but then we don't want the setting for these to cause errors when the
76
  // setting goes away.  Add a sub-topic of the settings using this
77
  // experimental name, and two things will happen.  One is that settings that
78
  // don't find the name will not be treated as errors.  Also, if you decide to
79
  // keep the settings just move them into the containing properties, and we
80
  // will auto-forward the experimental settings to the real one.
81
  static const char *GetExperimentalSettingsName();
82
83
  static bool IsSettingExperimental(llvm::StringRef setting);
84
85
protected:
86
  lldb::OptionValuePropertiesSP m_collection_sp;
87
};
88
89
} // namespace lldb_private
90
91
#endif // LLDB_CORE_USERSETTINGSCONTROLLER_H