[lldb][dwarf] Compute fully qualified names on simplified template names with DWARFT...
[llvm-project.git] / lldb / source / Interpreter / OptionValueRegex.cpp
blob91ec41df6ee507ac18109da4a481dcefaa078e8f
1 //===-- OptionValueRegex.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 //===----------------------------------------------------------------------===//
9 #include "lldb/Interpreter/OptionValueRegex.h"
11 #include "lldb/Utility/Stream.h"
13 using namespace lldb;
14 using namespace lldb_private;
16 void OptionValueRegex::DumpValue(const ExecutionContext *exe_ctx, Stream &strm,
17 uint32_t dump_mask) {
18 if (dump_mask & eDumpOptionType)
19 strm.Printf("(%s)", GetTypeAsCString());
20 if (dump_mask & eDumpOptionValue) {
21 if (dump_mask & eDumpOptionType)
22 strm.PutCString(" = ");
23 if (m_regex.IsValid()) {
24 llvm::StringRef regex_text = m_regex.GetText();
25 strm.Printf("%s", regex_text.str().c_str());
30 Status OptionValueRegex::SetValueFromString(llvm::StringRef value,
31 VarSetOperationType op) {
32 Status error;
33 switch (op) {
34 case eVarSetOperationInvalid:
35 case eVarSetOperationInsertBefore:
36 case eVarSetOperationInsertAfter:
37 case eVarSetOperationRemove:
38 case eVarSetOperationAppend:
39 error = OptionValue::SetValueFromString(value, op);
40 break;
42 case eVarSetOperationClear:
43 Clear();
44 NotifyValueChanged();
45 break;
47 case eVarSetOperationReplace:
48 case eVarSetOperationAssign:
49 m_regex = RegularExpression(value);
50 if (m_regex.IsValid()) {
51 m_value_was_set = true;
52 NotifyValueChanged();
53 } else if (llvm::Error err = m_regex.GetError()) {
54 return Status::FromError(std::move(err));
55 } else {
56 return Status::FromErrorString("regex error");
58 break;
60 return error;