1 //===-- OptionGroupBoolean.cpp --------------------------------------------===//
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
7 //===----------------------------------------------------------------------===//
9 #include "lldb/Interpreter/OptionGroupBoolean.h"
11 #include "lldb/Host/OptionParser.h"
14 using namespace lldb_private
;
16 OptionGroupBoolean::OptionGroupBoolean(uint32_t usage_mask
, bool required
,
17 const char *long_option
,
18 int short_option
, const char *usage_text
,
20 bool no_argument_toggle_default
)
21 : m_value(default_value
, default_value
) {
22 m_option_definition
.usage_mask
= usage_mask
;
23 m_option_definition
.required
= required
;
24 m_option_definition
.long_option
= long_option
;
25 m_option_definition
.short_option
= short_option
;
26 m_option_definition
.validator
= nullptr;
27 m_option_definition
.option_has_arg
= no_argument_toggle_default
28 ? OptionParser::eNoArgument
29 : OptionParser::eRequiredArgument
;
30 m_option_definition
.enum_values
= {};
31 m_option_definition
.completion_type
= 0;
32 m_option_definition
.argument_type
= eArgTypeBoolean
;
33 m_option_definition
.usage_text
= usage_text
;
36 Status
OptionGroupBoolean::SetOptionValue(uint32_t option_idx
,
37 llvm::StringRef option_value
,
38 ExecutionContext
*execution_context
) {
40 if (m_option_definition
.option_has_arg
== OptionParser::eNoArgument
) {
41 // Not argument, toggle the default value and mark the option as having
43 m_value
.SetCurrentValue(!m_value
.GetDefaultValue());
44 m_value
.SetOptionWasSet();
46 error
= m_value
.SetValueFromString(option_value
);
51 void OptionGroupBoolean::OptionParsingStarting(
52 ExecutionContext
*execution_context
) {