1 //===-- OptionValueRegex.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/OptionValueRegex.h"
11 #include "lldb/Utility/Stream.h"
14 using namespace lldb_private
;
16 void OptionValueRegex::DumpValue(const ExecutionContext
*exe_ctx
, Stream
&strm
,
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
) {
34 case eVarSetOperationInvalid
:
35 case eVarSetOperationInsertBefore
:
36 case eVarSetOperationInsertAfter
:
37 case eVarSetOperationRemove
:
38 case eVarSetOperationAppend
:
39 error
= OptionValue::SetValueFromString(value
, op
);
42 case eVarSetOperationClear
:
47 case eVarSetOperationReplace
:
48 case eVarSetOperationAssign
:
49 m_regex
= RegularExpression(value
);
50 if (m_regex
.IsValid()) {
51 m_value_was_set
= true;
53 } else if (llvm::Error err
= m_regex
.GetError()) {
54 return Status::FromError(std::move(err
));
56 return Status::FromErrorString("regex error");