1 //===-- OptionValueRegex.cpp ------------------------------------*- C++ -*-===//
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 if (m_regex.Compile(value)) {
50 m_value_was_set = true;
53 char regex_error[1024];
54 if (m_regex.GetErrorAsCString(regex_error, sizeof(regex_error)))
55 error.SetErrorString(regex_error);
57 error.SetErrorStringWithFormat("regex error %u",
58 m_regex.GetErrorCode());
65 lldb::OptionValueSP OptionValueRegex::DeepCopy() const {
66 return OptionValueSP(new OptionValueRegex(m_regex.GetText().str().c_str()));