OptionValueUUID.h revision 360784
1//===-- OptionValueUUID.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 liblldb_OptionValueUUID_h_
10#define liblldb_OptionValueUUID_h_
11
12#include "lldb/Utility/UUID.h"
13#include "lldb/Interpreter/OptionValue.h"
14
15namespace lldb_private {
16
17class OptionValueUUID : public OptionValue {
18public:
19  OptionValueUUID() : OptionValue(), m_uuid() {}
20
21  OptionValueUUID(const UUID &uuid) : OptionValue(), m_uuid(uuid) {}
22
23  ~OptionValueUUID() override {}
24
25  // Virtual subclass pure virtual overrides
26
27  OptionValue::Type GetType() const override { return eTypeUUID; }
28
29  void DumpValue(const ExecutionContext *exe_ctx, Stream &strm,
30                 uint32_t dump_mask) override;
31
32  Status
33  SetValueFromString(llvm::StringRef value,
34                     VarSetOperationType op = eVarSetOperationAssign) override;
35  Status
36  SetValueFromString(const char *,
37                     VarSetOperationType = eVarSetOperationAssign) = delete;
38
39  bool Clear() override {
40    m_uuid.Clear();
41    m_value_was_set = false;
42    return true;
43  }
44
45  lldb::OptionValueSP DeepCopy() const override;
46
47  // Subclass specific functions
48
49  UUID &GetCurrentValue() { return m_uuid; }
50
51  const UUID &GetCurrentValue() const { return m_uuid; }
52
53  void SetCurrentValue(const UUID &value) { m_uuid = value; }
54
55  void AutoComplete(CommandInterpreter &interpreter,
56                    CompletionRequest &request) override;
57
58protected:
59  UUID m_uuid;
60};
61
62} // namespace lldb_private
63
64#endif // liblldb_OptionValueUUID_h_
65