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 LLDB_INTERPRETER_OPTIONVALUEUUID_H 10 #define LLDB_INTERPRETER_OPTIONVALUEUUID_H 11 12 #include "lldb/Utility/UUID.h" 13 #include "lldb/Interpreter/OptionValue.h" 14 15 namespace lldb_private { 16 17 class OptionValueUUID : public Cloneable<OptionValueUUID, OptionValue> { 18 public: 19 OptionValueUUID() = default; 20 OptionValueUUID(const UUID & uuid)21 OptionValueUUID(const UUID &uuid) : m_uuid(uuid) {} 22 23 ~OptionValueUUID() override = default; 24 25 // Virtual subclass pure virtual overrides 26 GetType()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 ToJSON(const ExecutionContext * exe_ctx)32 llvm::json::Value ToJSON(const ExecutionContext *exe_ctx) override { 33 return m_uuid.GetAsString(); 34 } 35 36 Status 37 SetValueFromString(llvm::StringRef value, 38 VarSetOperationType op = eVarSetOperationAssign) override; 39 Clear()40 void Clear() override { 41 m_uuid.Clear(); 42 m_value_was_set = false; 43 } 44 45 // Subclass specific functions 46 GetCurrentValue()47 UUID &GetCurrentValue() { return m_uuid; } 48 GetCurrentValue()49 const UUID &GetCurrentValue() const { return m_uuid; } 50 SetCurrentValue(const UUID & value)51 void SetCurrentValue(const UUID &value) { m_uuid = value; } 52 53 void AutoComplete(CommandInterpreter &interpreter, 54 CompletionRequest &request) override; 55 56 protected: 57 UUID m_uuid; 58 }; 59 60 } // namespace lldb_private 61 62 #endif // LLDB_INTERPRETER_OPTIONVALUEUUID_H 63