1 //===-- OptionGroupMemoryTag.cpp -----------------------------------------===//
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 #include "lldb/Interpreter/OptionGroupMemoryTag.h"
10 
11 #include "lldb/Host/OptionParser.h"
12 
13 using namespace lldb;
14 using namespace lldb_private;
15 
16 static const uint32_t SHORT_OPTION_SHOW_TAGS = 0x54414753; // 'tags'
17 
18 OptionGroupMemoryTag::OptionGroupMemoryTag(bool note_binary /*=false*/)
19     : m_show_tags(false, false), m_option_definition{
20                                      LLDB_OPT_SET_1,
21                                      false,
22                                      "show-tags",
23                                      SHORT_OPTION_SHOW_TAGS,
24                                      OptionParser::eNoArgument,
25                                      nullptr,
26                                      {},
27                                      0,
28                                      eArgTypeNone,
29                                      note_binary
30                                          ? "Include memory tags in output "
31                                            "(does not apply to binary output)."
32                                          : "Include memory tags in output."} {}
33 
34 llvm::ArrayRef<OptionDefinition> OptionGroupMemoryTag::GetDefinitions() {
35   return llvm::makeArrayRef(m_option_definition);
36 }
37 
38 Status
39 OptionGroupMemoryTag::SetOptionValue(uint32_t option_idx,
40                                      llvm::StringRef option_arg,
41                                      ExecutionContext *execution_context) {
42   assert(option_idx == 0 && "Only one option in memory tag group!");
43 
44   switch (m_option_definition.short_option) {
45   case SHORT_OPTION_SHOW_TAGS:
46     m_show_tags.SetCurrentValue(true);
47     m_show_tags.SetOptionWasSet();
48     break;
49 
50   default:
51     llvm_unreachable("Unimplemented option");
52   }
53 
54   return {};
55 }
56 
57 void OptionGroupMemoryTag::OptionParsingStarting(
58     ExecutionContext *execution_context) {
59   m_show_tags.Clear();
60 }
61