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
13using namespace lldb;
14using namespace lldb_private;
15
16static const uint32_t SHORT_OPTION_SHOW_TAGS = 0x54414753; // 'tags'
17
18OptionGroupMemoryTag::OptionGroupMemoryTag(bool note_binary /*=false*/)
19 : m_show_tags(false, false), m_option_definition{
20 LLDB_OPT_SET_1,
21 .required: false,
22 .long_option: "show-tags",
23 .short_option: SHORT_OPTION_SHOW_TAGS,
24 .option_has_arg: OptionParser::eNoArgument,
25 .validator: nullptr,
26 .enum_values: {},
27 .completion_type: 0,
28 .argument_type: eArgTypeNone,
29 .usage_text: note_binary
30 ? "Include memory tags in output "
31 "(does not apply to binary output)."
32 : "Include memory tags in output."} {}
33
34llvm::ArrayRef<OptionDefinition> OptionGroupMemoryTag::GetDefinitions() {
35 return llvm::ArrayRef(m_option_definition);
36}
37
38Status
39OptionGroupMemoryTag::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
57void OptionGroupMemoryTag::OptionParsingStarting(
58 ExecutionContext *execution_context) {
59 m_show_tags.Clear();
60}
61

source code of lldb/source/Interpreter/OptionGroupMemoryTag.cpp